Go语言之并发编程
【摘要】
并发概念
在学校,老师课件上是这样定义: 并发是指两个或两个以上的事件或活动在同一时间间隔内(时间段)发生,在多道程序处理时,宏观上并发,微观上交替执行(单处理器)
书本上是这样定义:(大概意思,...
并发概念
在学校,老师课件上是这样定义:
并发是指两个或两个以上的事件或活动在同一时间间隔内(时间段)发生,在多道程序处理时,宏观上并发,微观上交替执行(单处理器)
书本上是这样定义:(大概意思,记不太清楚了)
处理器在一道程序执行并完成之前,可以执行另一道程序,也就实现了多道程序宏观的执行
传统并发—共享内存系统
传统的并发模型是基于内存共享的,各线程通信,需要共享变量,也需要锁的同步机制。共享变量不但要保证原子性,还要保证其他线程能看到修改后的值。(日后补充)
Go并发—消息传递系统
与传统的并发思维不同,Go语言是提倡基于消息传递的并发模型,并不共享变量,也没有锁的问题。其中就有并发模型,CSP(通信顺序进程)
go语言中特有的数据结构也形成了go语言的特点之一,chan通道,通过的此消息通道的传递从而使得go的并发获得了很好的体现。当然go也有传统并发的机制sync。但是go语言我们是要将其中的特色并发放大。
Message:=make(chan string)
Msg := <- Messages
- 1
- 2
通过通过进行数据的传递,从而控制多线程之间的运行过程。
在Go语言社区有一句很有名的语句:
不要通过共享内存来通信,而应该通过通信来共享内存。
并发的内容远不止这些,再往后的学习中,我也会继续探索。
文章来源: blog.csdn.net,作者:小生凡一,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_45304503/article/details/113799869
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)