線程同步機制實驗報告

線程同步機制實驗報告

ID:27804882

大?。?33.70 KB

頁數(shù):13頁

時間:2018-12-06

線程同步機制實驗報告_第1頁
線程同步機制實驗報告_第2頁
線程同步機制實驗報告_第3頁
線程同步機制實驗報告_第4頁
線程同步機制實驗報告_第5頁
資源描述:

《線程同步機制實驗報告》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。

1、線程同步機制實驗報告、實驗目的:通過觀察共享數(shù)據(jù)資源但不受控制的兩個線程的并發(fā)運行輸出結果,體會同步機制的必要性和重要性。然后利用現(xiàn)有操作系統(tǒng)提供的同步機制編程實現(xiàn)關于該兩個線程的冇序控制,同時要求根據(jù)同步機制的Peterson軟件解決方案嘗試口己編程實現(xiàn)同步機制和用于同一問題的解決,并基于程序運行時間長短比較兩種同步機制。二、實驗內容:1、基于給定銀行賬戶間轉賬操作模擬代碼作為線程執(zhí)行代碼,在主線程中創(chuàng)建兩個并發(fā)線程,編程實現(xiàn)并觀察程序運行結杲和予以解釋說明。(無同步機制)2、利用Win32API中互斥信

2、號量操作函數(shù)解決上述線程并發(fā)問題,并分析、嘗試和討論線程執(zhí)行體屮有關信號量操作函數(shù)調用的正確位置。3、根據(jù)同步機制的Peterson軟件解決方案嘗試自己編程實現(xiàn)線程同步機制和用于上述線程并發(fā)問題的解決,并基于程序運行時間長短將其與基于Win32API互斥信號量的線程同步機制的效率展開比較。其間,可規(guī)定線程主體代碼循環(huán)執(zhí)行1000000次。三、實驗環(huán)境:操作系統(tǒng):Windows7軟件:VC++6.0實驗設計:?本實驗包含三個基于并發(fā)線程的程序,第一個沒有同步機制,第二個利用Win32API中互斥信號量操作函數(shù)

3、解決線程并發(fā)問題,第三個根據(jù)同步機制的Peterson軟件解決方案實現(xiàn)線程同步機制并解決線程并發(fā)問題。三個程序擁有相同的線程主體:線程主體設計:do{nTemp1=nAccountl;nTemp2=nAccount2;nRandom二rand();nAccountl=nTemp1+nRandom;nAccount2=nTemp2-nRandom;nLoop++;}while((nAccountl+nAccount2)==0);該線程主體是對銀行賬戶間轉賬操作模擬的模擬,可知,若并發(fā)的線程不發(fā)生交叉,則依次轉

4、賬操作JiunAccountl+nAccount2的值永遠為0,程序不會跳出循環(huán),如果線程發(fā)生交叉,則經(jīng)過若干次轉賬操作后,就有可能出現(xiàn)nAccountl+nAccount2不為0的情況,此時程序跳出循環(huán)。木實驗的三個程序就是基于此線程主體逐步實現(xiàn)的。?同步機制的Peterson軟件解決方案Peterson進程互斥算法4一編號+標志軟身譬決Varflagyfla%:boolean;turn:integer;repeatflagj:=true;turn:=j;while(fl喝andturn=j)do臨界區(qū)f

5、lagj:=false;untilfalse;2014年』月24日星期四北京交通大學計算機學院27……Pjflagj:=true;turn:=i;while(flagjandturn=i)doD:Q二Q、P;臨界反flagj:=false;五、數(shù)據(jù)結構設計:?程序一:沒有同步機制xctbclasses-'_JGlobals&mainQQThreadFunc(HANDLEThread)DnAccountlDnAccount2QnLoopDnRandomQnTemp!QnTemp2intmain(){HANDL

6、EThread[2J;說明:ThreadFunc(HANDLEThread)為線程兩數(shù);nAccountKaAccount2模擬賬戶;nLoop記錄循環(huán)次數(shù);nRandom是產(chǎn)生的隨機數(shù)模擬傳賬金額;nTemp1、nTemp2用于暫存nAccountlsaAccount2;HANDLEThread⑵創(chuàng)建兩個線程句柄。?程序二:利用Win32API中互斥信號量-xctblclassesErPjGlobals&mainQQThreadFuncfLPVOIDIpParamter)QmutexQnAccountlQ

7、nAccount2$nLoopQnRandom$nTemp!9nTemp2intmain()longtine;HANDLEThread[2];DWORDtine_start,tine_end;說明:mutex為互斥信號量;time_start>time_end為線程開始運彳亍和結束的時間;time=time_end-time_starto?程序三:同步機制的Peterson軟件解決方案classes-tSGIobals&mainQ&ThreadFuncOJHANDLEThread)&ThreadFuncl(

8、HANDLEThread)9flag/mutex/nAccount!/nAccount2/nLoop!/nLoop2/nRandom(/nTemp!QnTemp2Qturnintmain(){longtime;HANDLEThread[2];DWORDtine_start,tine_end;說明:flag為長度為2的bool型藪組,turn為整型,flag與turn共同實現(xiàn)同步機制的Peterson軟件解決方案;

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。