一、並行和併發的概念編程
並行(parallel):指在同一時刻,有多條指令在多個處理器上同時執行。安全
併發(concurrency):指在同一時刻只能有一條指令執行,但多個進程指令被快速的輪換執行,使得在宏觀上具備多個進程同時執行的效果,但在微觀上並非同時執行的,只是把時間分紅若干段,使多個進程快速交替的執行。併發
二、並行和併發的區別線程
- 併發是兩個隊列交替使用一臺咖啡機
- 並行是兩個隊列同時使用兩臺咖啡機
三、併發和並行原理圖設計
圖1blog
四、go語言併發優點隊列
有人把Go比做21世紀的C語言,第一是由於Go語言設計簡單,第二,21世紀最重要的就是並行程序設計,而Go從語言層面就支持了並行。同時,併發程序的內存管理有時候是很是複雜的,而Go語言提供了自動垃圾回收機制。進程
Go語言爲併發編程而內置的上層API基於CSP(communicating sequential processes, 順序通訊進程)模型。這就意味着顯式鎖都是能夠避免的,由於Go語言經過相冊安全的通道發送和接受數據以實現同步,這大大地簡化了併發程序的編寫。內存
通常狀況下,一個普通的桌面計算機跑十幾二十個線程就有點負載過大了,可是一樣這臺機器卻能夠輕鬆地讓成百上千甚至過萬個goroutine進行資源競爭。資源