Windows操作系統(tǒng)Windows 2000xp線程間通信實(shí)驗(yàn)報(bào)告.doc

Windows操作系統(tǒng)Windows 2000xp線程間通信實(shí)驗(yàn)報(bào)告.doc

ID:55323666

大?。?6.51 KB

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

時(shí)間:2020-05-10

Windows操作系統(tǒng)Windows 2000xp線程間通信實(shí)驗(yàn)報(bào)告.doc_第1頁(yè)
Windows操作系統(tǒng)Windows 2000xp線程間通信實(shí)驗(yàn)報(bào)告.doc_第2頁(yè)
Windows操作系統(tǒng)Windows 2000xp線程間通信實(shí)驗(yàn)報(bào)告.doc_第3頁(yè)
Windows操作系統(tǒng)Windows 2000xp線程間通信實(shí)驗(yàn)報(bào)告.doc_第4頁(yè)
Windows操作系統(tǒng)Windows 2000xp線程間通信實(shí)驗(yàn)報(bào)告.doc_第5頁(yè)
資源描述:

《Windows操作系統(tǒng)Windows 2000xp線程間通信實(shí)驗(yàn)報(bào)告.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。

1、Windows操作系統(tǒng)C/C++程序?qū)嶒?yàn)姓名:學(xué)號(hào):班級(jí):信工7班院系:信息工程學(xué)院2012年11月20日4實(shí)驗(yàn)四Windows2000/xp線程間通信一、背景知識(shí)二、實(shí)驗(yàn)?zāi)康娜?、工?準(zhǔn)備工作四、實(shí)驗(yàn)內(nèi)容1.文件對(duì)象步驟1:登錄進(jìn)入Windows2000/xpProfessional。步驟2:在“開始”菜單中單擊“程序”-“MicrosoftVisualStudio6.0”–“MicrosoftVisualC++6.0”命令,進(jìn)入VisualC++窗口。步驟3:在工具欄單擊“打開”按鈕,在“打開”對(duì)話框中找到并打開實(shí)驗(yàn)源程序

2、4-1.cpp。步驟4:?jiǎn)螕簟癇uild”菜單中的“Compile4-1.cpp”命令,并單擊“是”按鈕確認(rèn)。系統(tǒng)對(duì)4-1.cpp進(jìn)行編譯。步驟5:編譯完成后,單擊“Build”菜單中的“Build4-1.exe”命令,建立4-1.exe可執(zhí)行文件。操作能否正常進(jìn)行?如果不行,則可能的原因是什么?可以正常運(yùn)行步驟6:在工具欄單擊“ExecuteProgram”按鈕,執(zhí)行4-1.exe程序。運(yùn)行結(jié)果(如果運(yùn)行不成功,則可能的原因是什么?):4閱讀和分析程序4-1,請(qǐng)回答問題:1)清單4-1中啟動(dòng)了多少個(gè)單獨(dú)的讀寫線程?創(chuàng)建100

3、個(gè)線程從文件中進(jìn)行讀寫2)使用了哪個(gè)系統(tǒng)API函數(shù)來創(chuàng)建線程例程?CreateThread3)文件的讀和寫操作分別使用了哪個(gè)API函數(shù)?讀:ReadFile寫:WriteFile每次運(yùn)行進(jìn)程時(shí),都可看到清單4-3中的每個(gè)線程從前面的線程中讀取數(shù)據(jù)并將數(shù)據(jù)增加,文件中的數(shù)值連續(xù)增加。這個(gè)示例是很簡(jiǎn)單的通訊機(jī)制??蓪⑦@一示例用作編寫自己的文件讀/寫代碼的模板。請(qǐng)注意程序中寫入之前文件指針的重置。重置文件指針是必要的,因?yàn)樵撝羔樤谧x取結(jié)束時(shí)將處于前四個(gè)字節(jié)之后,同一指針還要用于向文件寫入數(shù)據(jù)。如果函數(shù)向該處寫入新數(shù)值,則下次進(jìn)程運(yùn)行

4、時(shí),只能讀到原來的數(shù)值。那么:4)在程序中,重置文件指針使用了哪一個(gè)函數(shù)?重置文件指針使用了SetFilePointer5)從步驟6的輸出結(jié)果,對(duì)照分析4-1程序,可以看出程序運(yùn)行的流程嗎?請(qǐng)簡(jiǎn)單描述:創(chuàng)建100個(gè)線程從文件進(jìn)行讀寫,在數(shù)據(jù)文件中讀取當(dāng)前數(shù)據(jù)的簡(jiǎn)單線程4,顯示當(dāng)前數(shù)據(jù),增加數(shù)值,并將增加的數(shù)值寫回永久存儲(chǔ)介質(zhì)。寫的時(shí)候也一樣,顯示當(dāng)前數(shù)據(jù),增加數(shù)值,并將增加的數(shù)值寫回永久存儲(chǔ)介質(zhì)。2.文件映射對(duì)象步驟7:在VisualC++窗口的工具欄中單擊“打開”按鈕,在“打開”對(duì)話框中找到并打開實(shí)驗(yàn)源程序4-2.cpp。步

5、驟8:?jiǎn)螕簟癇uild”菜單中的“Compile4-2.cpp”命令,并單擊“是”按鈕確認(rèn)。系統(tǒng)對(duì)4-2.cpp進(jìn)行編譯。步驟9:編譯完成后,單擊“Build”菜單中的“Build4-2.exe”命令,建立4-2.exe可執(zhí)行文件。操作能否正常進(jìn)行?如果不行,則可能的原因是什么?可以正常運(yùn)行步驟10:在工具欄單擊“ExecuteProgram”按鈕,執(zhí)行4-2.exe程序。運(yùn)行結(jié)果(如果運(yùn)行不成功,則可能的原因是什么?):閱讀和分析程序4-2,請(qǐng)回答:41)程序中用來創(chuàng)建一個(gè)文件映射對(duì)象的系統(tǒng)API函數(shù)是哪個(gè)?CreateFi

6、leMapping2)在文件映射上創(chuàng)建和關(guān)閉文件視圖分別使用了哪一個(gè)系統(tǒng)函數(shù)?a.創(chuàng)建文件視圖:MapViewOfFileb.關(guān)閉文件視圖:UnmapViewOfFile3)對(duì)照清單4-2,分析程序運(yùn)行并填空:運(yùn)行時(shí),清單4-2所示程序首先通過(CreateFileMapping)函數(shù)創(chuàng)建一個(gè)小型的文件映射對(duì)象(HANDLEhMapping),接著,使用系統(tǒng)API函數(shù)(CreateMutex)再創(chuàng)建一個(gè)保護(hù)其應(yīng)用的互斥體(g_hMutexMapping)。然后,應(yīng)用程序創(chuàng)建100個(gè)線程,每個(gè)都允許進(jìn)行同樣的進(jìn)程,即:通過互斥體

7、獲得訪問權(quán),這個(gè)操作是由語(yǔ)句:g_hMutexMapping=::CreateMutex(NULL,FALSE,NULL)實(shí)現(xiàn)的。再通過函數(shù)(WaitForSingleObject)操作將視圖映射到文件,將高32位看作有符號(hào)整數(shù),將該數(shù)值增加(即命令:++(*pnData);),再將新數(shù)值顯示在控制臺(tái)上。每個(gè)線程清除文件的視圖并在退出之前釋放互斥體的語(yǔ)句是ReleaseMutex(g_hMutexMapping)。當(dāng)線程完成時(shí),應(yīng)用程序關(guān)閉并退出。4)將清單4-2中的語(yǔ)句::Sleep(500);刪除(例如在語(yǔ)句前面加上“//

8、”)后,重新編譯運(yùn)行,結(jié)果有變化嗎?為什么?有變化,結(jié)果出來得更快了,因?yàn)镾leep(500)讓程序在這里睡了一會(huì),如果刪除的話,程序直接出結(jié)果了,所以會(huì)快一點(diǎn)。4

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

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

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