golang中的并发和并行
- 作者: 大驴的
- 来源: 51数据库
- 2021-06-28
golang中默认使用一个cpu,这时程序无法并发,只能是并发。因为始终只有一个cpu在运行。
runtime.gomaxprocs(2) 设置使用2个cpu,这才真正是并行。
补充:go多核并行化
通过goroutine创建相同逻辑cpu核心个数的协程,将求和列表分段,分别计算后汇总。
通过runtime.numcpu()获得逻辑cpu个数,并计算每个协程中计算列表的下标,计算完成后,向channel中写入1。
通过向channel中读取int的个数,判断协程运行是否全部完成,之后求和即可。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
推荐阅读
