并發(fā)程序的范例來自于一片古老的論文<<concurrent programming concepts>>中的一個流處理過程的實(shí)例。盡管說并發(fā)從語言級別支持要更加容易的多,但是對于C++來說,現(xiàn)階段編寫并發(fā)的方式還是以Multithread為主。
程序邏輯很簡單,讀取一個整數(shù)(實(shí)質(zhì)上為了方便我直接用的是程序生成,偷懶了,哈哈),然后并行處理。注意處理這一步一定是高度并發(fā)的,這里我為了簡單起見使用了sleep的方式來模擬真實(shí)時耗,然后數(shù)據(jù)改變僅僅是在原數(shù)上乘以二,最后輸出。
輸入和輸出考慮到通常他們都是序列化的情況選擇了單線程的方式,實(shí)際上如果條件允許,輸入輸出也完全可以是并發(fā)的。
對于中間的sleep+2乘這一步,才是真正并發(fā)的。之所以用sleep,是因?yàn)樗艿鹊揭欢ǖ臅r間并在此期間基本上不占用CPU,有點(diǎn)類似于MPU的情況。所以拿它還能做出來一些挺有意思的數(shù)據(jù)來(YY下SMP ^_^)。
工程文件下載注意記得將boost::thread的庫文件的目錄添加到附加庫目錄下。
只有boost源代碼庫沒有二進(jìn)制庫的,可以訪問
這里下載boost::thread所需要的lib和dll。(VC++8.0使用)
如果想自己編譯boost而又懶得去看E文的,可以看
這里的編譯教程。