首先,我們需要多執行緒的主要原因是:在許多應用中會同時發生多種活動,某些活動會隨著時間的推移被阻塞,通過將這些應用程式分解成可以準並行執行的多個順序執行緒,程式設計模型會變得簡單起來。
這裡可以說加入了乙個新的元素:並行實體共享同乙個位址空間和所有可用資料的能力。對於某些應用而言,這種能力是必須的,而這正是多程序模型(它們具有不同的位址空間)無法表達的。
第二個需要多執行緒的理由是,由於執行緒比程序更輕量級,所以它們更容易(更快)建立和撤銷。在一般情況下,建立乙個執行緒比建立乙個程序要快上10-100倍。在有大量執行緒需要動態和快速修改時,具有這一特性是非常重要的。
第三個需要多執行緒的理由是,關於效能方面的,若多個執行緒都是cpu密集型的,那麼多執行緒並不能很明顯的體現出它的效能的提公升,但是在一些需要大量i/o處理和大量計算的情況下,擁有多執行緒允許這些活動彼此重疊進行,對程式效能的提公升是非常明顯的。
最後,在多cpu系統中,多執行緒是有益的,在這樣的系統中,可以真正實現物理上的多執行緒並行執行。
執行緒概念試圖實現的是:共享一組資源的多個執行緒的執行能力,以便這些執行緒可以為完成某項任務而共同工作。
程序用於將資源集中在一起,而執行緒則是在cpu上被排程的實體。
為什麼需要多執行緒程式設計模型
首先,我們需要多執行緒的主要原因是 在許多應用中會同時發生多種活動,某些活動會隨著時間的推移被阻塞,通過將這些應用程式分解成可以準並行執行的多個順序執行緒,程式設計模型會變得簡單起來。這裡可以說加入了乙個新的元素 並行實體共享同乙個位址空間和所有可用資料的能力。對於某些應用而言,這種能力是必須的,而...
多執行緒程式設計模型
在學習muduo網路庫前,應該先熟悉一下多執行緒網路服務程式設計模型。在6.6.2節介紹了11種方案。方案0到方案4用的是阻塞i o。方案5到方案11用的都是非阻塞i o。方案0 accept read write 方案0不是併發模型,只是乙個迴圈處理。用 表示的話,可以表示為 while true...
為什麼要用多執行緒
以前我認為多執行緒的作用就是提公升效能。實際上,多執行緒並不一定能提公升效能 甚至還會降低效能 多執行緒也不只是為了提公升效能。多執行緒主要有以下的應用場景 1 避免阻塞 非同步呼叫 單個執行緒中的程式,是順序執行的。如果前面的操作發生了阻塞,那麼就會影響到後面的操作。這時候可以採用多執行緒,我感覺...