go并发控制基础 goroutine/chan/select/context/sync/timer

goroutine

goroutine是golang中的并发执行单元,是一种轻量级的线程(或称为协程),用于并发执行函数或方法。每个goroutine都有自己的调用栈,并独立地运行于其他goroutine之间,由Go运行时系统进行管理和调度。

创建一个新的goroutine非常简单,只需要在函数或方法前面加上关键字"go"即可。

通过使用goroutine,我们可以在程序中轻松地实现并发处理任务,提高程序的并发性和响应能力。

chan

Do not communicate by sharing memory; instead, share memory by communicating.

“不要以共享内存的方式来通信,相反,要通过通信来共享内存。”

基于CSP并发模型golang设计了channel这种数据结构来实现goroutine之间的数据传输和同步。

rw := make(chan int)  // 可读可写channel
var r