Go语言之并发编程

并发概念

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


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


传统并发—共享内存系统

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

Go并发—消息传递系统

与传统的并发思维不同,Go语言是提倡基于消息传递的并发模型,并不共享变量,也没有锁的问题。其中就有并发模型,CSP(通信顺序进程)
go语言中特有的数据结构也形成了go语言的特点之一,chan通道,通过的此消息通道的传递从而使得go的并发获得了很好的体现。当然go也有传统并发的机制sync。但是go语言我们是要将其中的特色并发放大。

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

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


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

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

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

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小生凡一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值