天天看點

多線程程式設計模型

在多線程程式設計中常見的模型包括:

1.委托(boss-worker)模型

2.對等(peer-to-peer)模型

3.流水線(pipeline)模型

4.生産者-消費者(producer-consumer)模型

切記不要将各種模型互相獨立起來,而應該根據工作分解結構(WBS)來決定在不同的階段或部分應采用哪種模型最合适。

下面就上述4種模型做一個簡單的介紹:

1.委托模型

簡而言之就是一個boss線程建立其他的worker線程,并給每個建立的worker線程指派任務。boss線程的主要作用是:a:建立所有的線程;b:将工作(task)放置到隊列中;c:當工作需要處理時,喚醒worker線程。worker線程的主要作用是:a:檢查隊列中的請求;b:執行被指派的任務;c:如果沒有可供處理的工作,則将自己挂起。

2.對等模型

相對于委托模型,在對等模型中,所有線程處于一個平等的工作狀态,即所有線程都是worker線程,但會有一個線程在最初時建立所需要的全部線程,但該線程沒有委派工作的功能。

3.流水線模型

用流水線生産線來描述流水線模型是比較恰當的,打個比方就能對該模型有一個初步的了解了。假設現有一篇文檔A,需要把其中的标點符号,副詞和感歎詞全部去掉,可以建立3個線程,姑且記為T1,T2,T3,用T1處理标點符号,T2處理副詞,T3處理感歎詞。首先用T1處理文檔A,将得到的新文檔B傳給T2,在T2處理完後,将得到的新文檔C傳給T3處理,直至T3處理完畢,一個流程完成。

4.生産者-消費者模型

在該模型中,producer線程負責産生資料,而consumer線程負責消費資料。該模型在大規模程式和應用中,也被稱作用戶端-伺服器模型。

繼續閱讀