Golang的并发编程 - Go语言中文社区

Golang的并发编程


golang是为并发而生的语言。优雅的并发编程范式,完善的并发支持,出色的并发性能是golang区别于其他语言的一大特色。

并发的优势:

1、并发能更客观地表现问题模型

2、并发可以充分利用cpu核心的优势,提高程序的执行效率

3、并发能充分利用cpu与其他硬件设备固有的异步性

golang并发采用的协程,也是轻量级别线程,goroutine。而goroutine间通信方式是channel,我们可以使用channel在两个或者多个goroutine之间传递消息。channel是进程内的通信方式,因此通过channel传递的过程和调用函数时的参数传递行为比较一致,比如也可以传递指针等。这跟面向过程c语言处理多线程采用互斥锁写法不太一样的方式,更直接了当采用并发模式编程。

select用来监控一系列的文件句柄,一旦其中一个文件句柄发生了IO动作,该select()调用就会被返回。该机制也用于实现高并发的socket服务器程序,也可以用来处理异步IO问题。结合channel的缓冲机制。所以在golang并发编程中,需要十分小心处理死锁的问题。通道需要保证有流入也有流出,如果造成只入不出或者流入速度大于流出的速度,都会对程序造成死锁或者堵住。

多核并行化,golang编译器还不能很智能地发现和利用多核的优势。虽然goroutine简化了我们写并行代码的过程,但实际上整体运行效率并不真正高于单线程程序。

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/916686ee9bf4
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 09:58:17
  • 阅读 ( 916 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢