go语言并发原理
Go不推荐用共享内存的方式传递数据,而推荐使用channel(或称“通道” )。channel主要用来在多个goroutine之间传递数据,并且还
会保证整个过程的并发安全性。不过,作为可选方法,Go依然提供了一些传统的同步方法 (比如互斥量、 条件变量等)。
Go的并发机制指的是用于支撑goroutine 和channel的底层原理,说到这个就不得不提go语言的调度模型,GMP。
GMP调度模型
说起Go的线程实现模型,有3个必知的核心元素,它们支撑起了这个模型的主框架,
简要说明如下:
- M: machine的缩写。一个M代表一个内核线程,或称“工作线程”。
- P: processor的缩写。一个P代表执行一个Go代码片段所必需的资源(或称“上下文环境”)。
- G: goroutine的缩写。一个G代表一 个Go代码片段。前者是对后者的一种封装。
.未完待续~~~