官术网_书友最值得收藏!

第2章 并發編程的其他基礎知識

2.1 什么是多線程并發編程

首先要澄清并發和并行的概念,并發是指同一個時間段內多個任務同時都在執行,并且都沒有執行結束,而并行是說在單位時間內多個任務同時在執行。并發任務強調在一個時間段內同時執行,而一個時間段由多個單位時間累積而成,所以說并發的多個任務在單位時間內不一定同時在執行。在單CPU的時代多個任務都是并發執行的,這是因為單個CPU同時只能執行一個任務。在單CPU時代多任務是共享一個CPU的,當一個任務占用CPU運行時,其他任務就會被掛起,當占用CPU的任務時間片用完后,會把CPU讓給其他任務來使用,所以在單CPU時代多線程編程是沒有太大意義的,并且線程間頻繁的上下文切換還會帶來額外開銷。

圖2-1所示為在單個CPU上運行兩個線程,線程A和線程B是輪流使用CPU進行任務處理的,也就是在某個時間內單個CPU只執行一個線程上面的任務。當線程A的時間片用完后會進行線程上下文切換,也就是保存當前線程A的執行上下文,然后切換到線程B來占用CPU運行任務。

圖2-1

圖2-2所示為雙CPU配置,線程A和線程B各自在自己的CPU上執行任務,實現了真正的并行運行。

圖2-2

而在多線程編程實踐中,線程的個數往往多于CPU的個數,所以一般都稱多線程并發編程而不是多線程并行編程。

主站蜘蛛池模板: 武冈市| 林周县| 唐山市| 桃江县| 门源| 沾益县| 濉溪县| 灌阳县| 屏南县| 墨竹工卡县| 甘德县| 宜丰县| 商丘市| 安顺市| 历史| 新疆| 湘乡市| 江源县| 江山市| 阿巴嘎旗| 樟树市| 棋牌| 米林县| 望谟县| 厦门市| 汉沽区| 南江县| 荃湾区| 马关县| 京山县| 肇源县| 五台县| 宜春市| 崇明县| 旅游| 舞阳县| 成安县| 罗定市| 运城市| 新乡县| 绿春县|