線程同步機(jī)制實(shí)驗(yàn)報(bào)告材料.doc

線程同步機(jī)制實(shí)驗(yàn)報(bào)告材料.doc

ID:55916516

大?。?98.00 KB

頁(yè)數(shù):12頁(yè)

時(shí)間:2020-06-14

線程同步機(jī)制實(shí)驗(yàn)報(bào)告材料.doc_第1頁(yè)
線程同步機(jī)制實(shí)驗(yàn)報(bào)告材料.doc_第2頁(yè)
線程同步機(jī)制實(shí)驗(yàn)報(bào)告材料.doc_第3頁(yè)
線程同步機(jī)制實(shí)驗(yàn)報(bào)告材料.doc_第4頁(yè)
線程同步機(jī)制實(shí)驗(yàn)報(bào)告材料.doc_第5頁(yè)
資源描述:

《線程同步機(jī)制實(shí)驗(yàn)報(bào)告材料.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、線程同步機(jī)制實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)觀察共享數(shù)據(jù)資源但不受控制的兩個(gè)線程的并發(fā)運(yùn)行輸出結(jié)果,體會(huì)同步機(jī)制的必要性和重要性。然后利用現(xiàn)有操作系統(tǒng)提供的同步機(jī)制編程實(shí)現(xiàn)關(guān)于該兩個(gè)線程的有序控制,同時(shí)要求根據(jù)同步機(jī)制的Peterson軟件解決方案嘗試自己編程實(shí)現(xiàn)同步機(jī)制和用于同一問(wèn)題的解決,并基于程序運(yùn)行時(shí)間長(zhǎng)短比較兩種同步機(jī)制。二、實(shí)驗(yàn)容:1、基于給定銀行賬戶間轉(zhuǎn)賬操作模擬代碼作為線程執(zhí)行代碼,在主線程中創(chuàng)建兩個(gè)并發(fā)線程,編程實(shí)現(xiàn)并觀察程序運(yùn)行結(jié)果和予以解釋說(shuō)明。(無(wú)同步機(jī)制)2、利用Win32API中互斥信號(hào)量操作函數(shù)解決上述線程并發(fā)問(wèn)題,并

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

3、現(xiàn)線程同步機(jī)制并解決線程并發(fā)問(wèn)題。三個(gè)程序擁有相同的線程主體:線程主體設(shè)計(jì):do{nTemp1=nAccount1;nTemp2=nAccount2;nRandom=rand();nAccount1=nTemp1+nRandom;nAccount2=nTemp2-nRandom;nLoop++;}while((nAccount1+nAccount2)==0);該線程主體是對(duì)銀行賬戶間轉(zhuǎn)賬操作模擬的模擬,可知,若并發(fā)的線程不發(fā)生交叉,則依次轉(zhuǎn)賬操作后nAccount1+nAccount2的值永遠(yuǎn)為0,程序不會(huì)跳出循環(huán),如果線程發(fā)生交叉,則經(jīng)過(guò)若

4、干次轉(zhuǎn)賬操作后,就有可能出現(xiàn)nAccount1+nAccount2不為0的情況,此時(shí)程序跳出循環(huán)。本實(shí)驗(yàn)的三個(gè)程序就是基于此線程主體逐步實(shí)現(xiàn)的。l同步機(jī)制的Peterson軟件解決方案二、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):l程序一:沒(méi)有同步機(jī)制說(shuō)明:ThreadFunc(HANDLEThread)為線程函數(shù);nAccount1、aAccount2模擬賬戶;nLoop記錄循環(huán)次數(shù);nRandom是產(chǎn)生的隨機(jī)數(shù)模擬轉(zhuǎn)賬金額;nTemp1、nTemp2用于暫存nAccount1、aAccount2;HANDLEThread[2]創(chuàng)建兩個(gè)線程句柄。l程序二:利用Win3

5、2API中互斥信號(hào)量說(shuō)明:mutex為互斥信號(hào)量;time_start、time_end為線程開(kāi)始運(yùn)行和結(jié)束的時(shí)間;time=time_end-time_start。l程序三:同步機(jī)制的Peterson軟件解決方案說(shuō)明:flag為長(zhǎng)度為2的bool型數(shù)組,turn為整型,flag與turn共同實(shí)現(xiàn)同步機(jī)制的Peterson軟件解決方案;nLoop1記錄線程0的循環(huán)次數(shù);nLoop記錄線程1的循環(huán)次數(shù)。二、算法流程圖:l程序一:沒(méi)有同步機(jī)制l程序二:利用Win32API中互斥信號(hào)量l程序三:同步機(jī)制的Peterson軟件解決方案二、實(shí)驗(yàn)過(guò)程結(jié)果

6、截圖:l程序一:沒(méi)有同步機(jī)制l程序二:利用Win32API中互斥信號(hào)量l程序三:同步機(jī)制的Peterson軟件解決方案二、實(shí)驗(yàn)結(jié)果分析:第一個(gè)程序兩個(gè)線程并發(fā)并沒(méi)有同步機(jī)制,所以產(chǎn)生了nAccount1+nAccount2不為0的情況,程序跳出循環(huán),一個(gè)線程結(jié)束,但剩余的一個(gè)線程自己是無(wú)法跳出循環(huán)的,所以程序一直在運(yùn)行;第二個(gè)程序利用互斥信號(hào)并通過(guò)成功資源資源來(lái)解決并發(fā)帶來(lái)的混亂;第三個(gè)程序通過(guò)同步機(jī)制的Peterson軟件解決方案解決并發(fā)帶來(lái)的混亂;通過(guò)結(jié)果可知,同步機(jī)制的Peterson軟件解決方案的效率要高于利用Win32API中互斥信

7、號(hào)量的方法。二、實(shí)驗(yàn)總結(jié):l實(shí)驗(yàn)心得:通過(guò)本次實(shí)驗(yàn),我鍛煉里自己的編程能力,并對(duì)理論知識(shí)有了進(jìn)一步的理解。對(duì)線程并發(fā)問(wèn)題有了進(jìn)一步的體會(huì),并掌握了同步線程的方法,特別是同步機(jī)制的Peterson軟件解決方案。同時(shí)我也體會(huì)到,學(xué)好這門(mén)課程,不光要掌握好理論,更重要的是要多實(shí)踐,對(duì)實(shí)驗(yàn)現(xiàn)象多加分析研究,才會(huì)融會(huì)貫通所學(xué)的容。l實(shí)驗(yàn)評(píng)價(jià):本實(shí)驗(yàn)按照實(shí)驗(yàn)指導(dǎo)書(shū)完成了要求的全部容,成功得出了結(jié)果。但實(shí)驗(yàn)程序也存在一些潛在的漏洞,比如第三個(gè)程序在多次執(zhí)行中會(huì)出現(xiàn)總的循環(huán)次數(shù)不為1000000的情況,有待進(jìn)一步完善。三、實(shí)驗(yàn)程序清單:l程序一:沒(méi)有同步機(jī)制

8、#include#include#include#includeusingnames

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

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

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