實(shí)驗(yàn)2 線程同步機(jī)制.doc

實(shí)驗(yàn)2 線程同步機(jī)制.doc

ID:55915306

大?。?2.00 KB

頁數(shù):8頁

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

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

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

1、實(shí)驗(yàn)2線程同步機(jī)制一、實(shí)驗(yàn)?zāi)康模和ㄟ^觀察共享數(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ī)制和用于同一問題的解決,并基于程序運(yùn)行時(shí)間長短比較兩種同步機(jī)制。二、實(shí)驗(yàn)設(shè)計(jì)I基于給定銀行賬戶間轉(zhuǎn)賬操作模擬代碼作為線程執(zhí)行代碼,在主線程中創(chuàng)建兩個(gè)并發(fā)線程,編程實(shí)現(xiàn)并觀察程序運(yùn)行結(jié)果和予以解釋說明。II利用Windows互斥信號(hào)量操作函數(shù)解決上述線程并發(fā)問題,并分析、嘗試和討論線程執(zhí)

2、行體中有關(guān)信號(hào)量操作函數(shù)調(diào)用的正確位置。III根據(jù)同步機(jī)制的Peterson軟件解決方案嘗試自己編程實(shí)現(xiàn)線程同步機(jī)制和用于上述線程并發(fā)問題的解決,并基于程序運(yùn)行時(shí)間長短將其與基于Windows互斥信號(hào)量的線程同步機(jī)制的效率展開比較。其間,可規(guī)定線程主體代碼循環(huán)執(zhí)行1000000次一、源程序清單和說明1未利用互斥信號(hào)量#include#include#includeintnAccount1=0,nAccount2=0;intnLoop=0;intnTemp1,nTemp2,nRando

3、m;DWORDWINAPIThreadFunc(HANDLEThread){do{nTemp1=nAccount1;nTemp2=nAccount2;nRandom=rand();nAccount1=nTemp1+nRandom;nAccount2=nTemp2-nRandom;nLoop++;}while((nAccount1+nAccount2)==0);printf("循環(huán)次數(shù)為%d",nLoop);return0;}intmain(){HANDLEThread[2];Thread[0]=CreateThread(NULL,0,Th

4、readFunc,NULL,0,NULL);Thread[1]=CreateThread(NULL,0,ThreadFunc,NULL,0,NULL);WaitForMultipleObjects(2,Thread,TRUE,INFINITE);CloseHandle(Thread);return0;}2利用Windows互斥信號(hào)量#include#include#include#defineCOUNT1000000intnAccount1=0,nAccount2=0;HANDLEm

5、utex;DWORDWINAPIThreadFunc(HANDLEThread){intnLoop=0;intnTemp1,nTemp2,nRandom;WaitForSingleObject(mutex,INFINITE);do{nTemp1=nAccount1;nTemp2=nAccount2;nRandom=rand();nAccount1=nTemp1+nRandom;nAccount2=nTemp2-nRandom;nLoop++;ReleaseMutex(mutex);WaitForSingleObject(mutex,INFIN

6、ITE);}while((nAccount1+nAccount2)==0&&nLoop

7、eThread(NULL,0,ThreadFunc,NULL,0,NULL);Thread[1]=CreateThread(NULL,0,ThreadFunc,NULL,0,NULL);WaitForMultipleObjects(2,Thread,TRUE,INFINITE);end=GetTickCount();printf("總共用時(shí)%ld",end-start);CloseHandle(Thread);CloseHandle(mutex);return0;}3同步機(jī)制的Peterson#include#inc

8、lude#include#defineCOUNT1000000intnAccount1=0,nAccount2=0,flag[

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

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

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(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)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。