Go语言并发编程

网友投稿 614 2022-05-29

并发概念

在学校,老师课件上是这样定义:

并发是指两个或两个以上的事件或活动在同一时间间隔内(时间段)发生,在多道程序处理时,宏观上并发,微观上交替执行(单处理器)

书本上是这样定义:(大概意思,记不太清楚了)

处理器在一道程序执行并完成之前,可以执行另一道程序,也就实现了多道程序宏观的执行

传统并发—共享内存系统

Go语言之并发编程

传统的并发模型是基于内存共享的,各线程通信,需要共享变量,也需要锁的同步机制。共享变量不但要保证原子性,还要保证其他线程能看到修改后的值。(日后补充)

Go并发—消息传递系统

与传统的并发思维不同,Go语言是提倡基于消息传递的并发模型,并不共享变量,也没有锁的问题。其中就有并发模型,CSP(通信顺序进程)

go语言中特有的数据结构也形成了go语言的特点之一,chan通道,通过的此消息通道的传递从而使得go的并发获得了很好的体现。当然go也有传统并发的机制sync。但是go语言我们是要将其中的特色并发放大。

Message:=make(chan string) Msg := <- Messages

1

2

通过通过进行数据的传递,从而控制多线程之间的运行过程。

在Go语言社区有一句很有名的语句:

不要通过共享内存来通信,而应该通过通信来共享内存。

并发的内容远不止这些,再往后的学习中,我也会继续探索。

Go

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Netty业务开发常见Bug解析
下一篇:40 - xml文档与字典之间的互相转换
相关文章