Go并发编程学习的简单代码示例:生产者消费者模型
前言
Go并发编程学习的简单代码示例:生产者消费者模型。
代码仓库
核心概念
并行和并发:
- 并行:同时运行多个任务。依赖硬件中央处理器(CPU)的数量或CPU的核心数量,CPU或CPU核心的数量越多,能够同时运行的程序/进程越多
- 并发:宏观上是“同时运行”,微观/实际上是在极短的时间内顺序运行多个程序/进程
进程、线程、协程和Go协程(goroutine):
- 进程:资源分配的基本单位
- 线程:内核态线程; CPU调度的基本单位
- 协程:用户态线程;轻量级线程
- 一个进程可以有多个线程
- 线程和协程对应关系可以是一对一、一对多和多对多
- goroutine:Go的协程概念,使用G(Goroutine)-P(Processor)-M(Machine)模型
Go的并发编程:
使用go关键字开启多协程goroutine,而不是多进程和多线程,实现并发
使用管道channal,而不是锁,实现同步互斥和数据通信
可联想进程间通信(IPC)中的管道pipe()、共享内存等方式
- 使用select{}语句,实现监听输入/输出(I/O)操作
可联想网络编程中的监听文件描述符select()函数
相比于C、C++和其他语言,使用Go实现并发编程的逻辑很简单
main.go(有详细注释)
1 | package main // 一个工程只有一个main包 |
结果
1 | PS C:\Users\DSHH\Desktop\go_test> go run main.go |
总结
Go并发编程的学习代码示例:生产者消费者模型。
参考资料
作者的话
- 感谢参考资料的作者/博主
- 作者:夜悊
- 版权所有,转载请注明出处,谢谢~
- 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
- 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
- 文章在认识上有错误的地方, 敬请批评指正
- 望读者们都能有所收获
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 夜悊的技术小宅!