併發和並行的區別

2021-10-08 15:15:28 字數 829 閱讀 4087

中午12點,開飯了,都湧向食堂,這就是一種併發。如果人很多,就是高併發。

假設只有乙個視窗,陸續湧入的人,排隊打飯就是一種很好用的方法。依次打飯,每個人都能打到。使用佇列的話,就必須用到緩衝區,總得有塊地來擱這些人。

如果領導或者教師優先的話,那就會形成兩個佇列。只要領導佇列有人,普通員工就必須排隊,領導佇列就是乙個優先佇列。

爭取雖然聽起來很暴力,但也不乏是一種處理方式。只要誰能擠進來就給誰打飯。作為飯堂工作人員是最簡易的方式。但是有可能會有人始終都搶不到。

### 3、預處理

在開飯前先把飯菜做好打好,有人來只需要遞就行了。

預處理是基於經驗的,需要提前知道需要哪些菜,需要做多少菜多少飯。這是一種空間換時間的方法,需要乙個地方來放置打好的飯菜。

對於計算機來說,提前將時效性不強的資料處理並常駐記憶體能夠很好的提高速度。

如果乙個視窗不夠的話,那多開幾個視窗,多僱幾個員工不就行了。

通過並行能夠很好地從根本來解決問題,但是同時也會帶來很高的成本。

計算機上可以通過購置更多伺服器,多程序來解決併發問題。並行是一種水平擴充套件的思想。

而且還會出現資源浪費,飯堂往往到飯點食客才會多。高併發往往都是短時間的。

注意:如果是在單一cpu上進行多程序和多執行緒就不是並行,而是乙個cpu對多個執行緒進行輪詢處理。

提高單一視窗的速度,也可以解決併發問題,是一種垂直擴充套件的思想。

但是單一的提公升是有上限的,並且越接近上限就越難提公升。而且如果單一的伺服器掛了,那麼所有的服務都掛了,而水平擴充套件的話,只是整體的效能降低了。

以上是處理併發比較常用的手段,當然還有其他的手段,比如訊息中介軟體。高併發問題通常需要根據場景選擇多種手段相結合來解決。

併發和並行區別?

做併發程式設計之前,必須首先理解什麼是併發,什麼是並行,什麼是併發程式設計,什麼是並行程式設計。併發 concurrency 和並行 parallellism 是 解釋一 並行是指兩個或者多個事件在同一時刻發生 而併發是指兩個或多個事件在同一時間間隔發生。解釋二 並行是在不同實體上的多個事件,併發是...

併發和並行的區別

併發就是一心二用 多用 比如你一邊聽老師講課,一邊低頭看課桌下韓寒的 這兩件事你在同時做,而且這兩件事並不一定需要相關。而並行就是兵分幾路幹同乙個事情。比如別人看 只能一行一行的看,而你能一目十行,這就是並行。關於併發和並行的區別,go語言有乙個非常好的教材,叫做 併發不是並行 它以go語言為例,並...

併發和並行的區別

在github上看到一幅圖,問如何向五歲的小孩講解併發和並行。然後有人以這幅圖做答 用咖啡機的比喻來形容併發和並行,從中最直接的體會是,併發是有狀態的,某一線程同時執行乙個任務,完了才能進行到下乙個,而並行是無狀態的。併發與並行是兩個既相似而又不相同的概念 併發性,又稱共行性,是指能處理多個同時性活...