并发与并行

并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天)

并行:同一时刻执行多个任务(你和你朋友都在用微信和女朋友聊天)

Go语言的并发通过goroutine实现。goroutine类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个goroutine并发工作。goroutine是由Go语言的运行时(runtime)调度完成,而线程是由操作系统调度完成。

Go语言还提供channel在多个goroutine间进行通信。goroutinechannelGo语言秉承的CSP(Communicating Sequential Process)并发模式的重要实现基础。