Go语言之并发编程

举报
小生凡一 发表于 2021/10/17 00:59:36 2021/10/17
【摘要】 并发概念 在学校,老师课件上是这样定义: 并发是指两个或两个以上的事件或活动在同一时间间隔内(时间段)发生,在多道程序处理时,宏观上并发,微观上交替执行(单处理器) 书本上是这样定义:(大概意思,...

并发概念

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


书本上是这样定义:(大概意思,记不太清楚了)
处理器在一道程序执行并完成之前,可以执行另一道程序,也就实现了多道程序宏观的执行


传统并发—共享内存系统

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

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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。