- Go Web服务器本身是并发的,服务器会把接收到的每条请求都放到独立的goroutine里运行。
- 并发和并行是两个相辅相成的概念,但它们并不相同。并发指的是两个或多个任务在同一时间段内启动、运行和结束,并且这些任务可能会彼此互动,而并行则是单纯地同时运行多个任务。
- Go通过goroutine和通道这两个重要的特性直接支持并发,但Go并不直接支持并行。
- goroutine用于编写并发程序,而通道则用于为不同的goroutine之间提供通信功能。
- 无缓冲通道都是同步的,尝试向一个已经包含数据的无缓冲通道推入新的数据将被阻塞;但是,有缓冲通道在被填满之前都是异步的。
- select语句可以以先到先服务的方式,从多个通道里选出一个已经准备好执行接收操作的通道。
- WaitGroup同样可以用于对多个通道进行同步。
- 并发程序的性能一般都会比相应的非并发程序要高,而具体提升多少则取决于所使用的算法(即使在只使用一个CPU的情况下,也是如此)。
- 在条件允许的情况下,并发的Web应用将自动地获得并行带来的优势。