首先拓展一下额外的内容:
runtime包介绍
(图片来自Go语言中文网)
一些较为重要的函数介绍
func NumCPU() int
使用NumCPU方法能够获得一个本地机器的逻辑CPU个数的int类型数值
func GOMAXPROCS(n int) int
GOMAXPROCS设置可同时执行的最大CPU数,并返回先前的设置。 若 n < 1,它就不会更改当前设置。本地机器的逻辑CPU数可通过 NumCPU 查询。本函数在调度程序优化后会去掉。
一般来说,在go1.8版本之后,系统会默认使用全部逻辑CPU进行并行操作。而在go1.8之前的版本,则需要自己设置(即使用GOMAXPROCS)。有的时候设计者需要保留一些CPU的功能占用,也会自主设定GOMAXPROCS比最大可用CPU数量少一些。
拓展完毕。接下来进入正题
那么不同的Goroutine之间如何通讯呢?有两种方式:
1、全局变量互斥锁
2、管道Channel
在Go语言中倡导:“不要以共享内存的方式来通信,相反,要通过通信来共享内存。”