并发编程是一个大的课题,这里仅仅只是用于说明Go语言。
并发编程在许多环境中为实现正确的访问共享变量时所需要的细节不同而产生困难。Go语言在共享变量的传递时鼓励另一种方法,并且,实际上,从未通过共享分隔执行的线程而起作用。仅有一个goroutine在任意给定的时间可以访问值。设计上,数据“竞争”不可能发生。为了鼓励这一方法,我们提出一个谚语:
不要使用共享内存来进行通信;而是通过通信来共享内存。
例如,索引数通过围绕一个数值变量的互斥,来被最好的完成。但是作为高层级的方法,使用channel来控制访问,很容易编写清晰、正确的程序。