并发与并行
并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天)
并行:同一时刻执行多个任务(你和你朋友都在用微信和女朋友聊天)
Go语言的并发通过goroutine
实现。goroutine
类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个goroutine
并发工作。goroutine
是由Go语言的运行时(runtime
)调度完成,而线程是由操作系统调度完成。
Go
语言还提供channel
在多个goroutine
间进行通信。goroutine
和channel
是Go
语言秉承的CSP
(Communicating Sequential Process)并发模式的重要实现基础。