freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

操作系統(tǒng)課程設(shè)計——讀者寫者問題(存儲版)

2025-04-24 02:43上一頁面

下一頁面
  

【正文】 InitializeCriticalSection(amp。 inFilethread_info[n_thread++].persist。thread_ID)。HANDLE h_Mutex2。 m_delay=(DWORD)(((ThreadInfo*)(p))delay *INTE_PER_SEC)。//修改讀者的數(shù)目readcount++。Sleep(m_persist)。 //互斥變量DWORD m_delay。Sleep(m_delay)。cs_Write)。if(writecount==0){LeaveCriticalSection(amp。HANDLE h_Mutex2。InitializeCriticalSection(amp。inFilethread_info[n_thread].entity。){//創(chuàng)建讀者進(jìn)程h_Thread[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(WP_ReaderThread),amp。}/////////////////////////////////////////////////////主函數(shù)int main(int argc,char *argv[]){ char ch。 }while(ch!=39。ch!=39。139。而且一個線程在取得Mutex的所有權(quán)之后,即使不調(diào)用ReleaseMutex函數(shù),在線程結(jié)束時,線程也會自動釋放Mutex的所有權(quán)。是因為主函數(shù)要等待所有的線程都結(jié)束之后才退出。但是這種方式會讓主函數(shù)循環(huán)等待,浪費(fèi)了CPU資源。請寫出寫者優(yōu)先結(jié)果,并進(jìn)行分析七、課程設(shè)計任務(wù)學(xué)習(xí)Windows2000環(huán)境下多線程編程的相關(guān)知識。注意:由于在以往的課程設(shè)計中部分同學(xué)存在抄襲現(xiàn)象,本次課程設(shè)計提交任務(wù)時除了提交程序和課程設(shè)計報告之外,還要接受教師的提問。Writer thread 2 begins to write to the file.當(dāng)讀者1,3和4讀完文件后,寫者2開始與文件。另一種方法是增加循環(huán)變量threadCount(線程的個數(shù)),每個線程結(jié)束的時候就會執(zhí)行語句threadCount。用EnterCriticalSection函數(shù)可以進(jìn)入一個CriticalSectin,類似于P操作,而LeaveCriticalSection函數(shù)離開一個CriticalSection,類似于V操作。 } return 0。) return 0。amp。 printf(Enter your choice(1,2or3):)。}}//等待所有的線程結(jié)束wait_for_all=WaitForMultipleObjects(n_thread,h_Thread,TRUE,1)。i++){if(thread_info[i].entity==READER||thread_info[i].entity ==39。printf(Writer priority:\n\n)。readcount=0。HANDLE h_Mutex1。wait_for_mutex3=WaitForSingleObject(h_Mutex3,1)。}ReleaseMutex(h_Mutex3)。m_delay=(DWORD)(((ThreadInfo*)(p))delay *INTE_PER_SEC)。}ReleaseMutex(h_Mutex2)。ReleaseMutex(h_Mutex1)。cs_Read)。 //讀文件持續(xù)時間int m_serial。}///////////////////////////////////////////////////寫者優(yōu)先——讀者線程//P:讀者線程信息void WP_ReaderThread(void *p){ //請編寫寫者優(yōu)先的讀者線程HANDLE h_Mutex1。) { //創(chuàng)建讀者線程 h_Thread[i]=CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)(RP_ReaderThread), amp。 inFilethread_info[n_thread].entity。 ThreadInfo thread_info[MAX_THREAD_NUM]。 //釋放資源 LeaveCriticalSection(amp。 m_persist=(DWORD)(((ThreadInfo*)(p))persist*INTE_PER_SEC)。 if(readcount==0) { //如果所有的者讀完,喚醒寫者 LeaveCriticalSection(amp。 if(readcount==1) { //第一個讀者,等待資源 EnterCriticalSection(amp。 //讀文件持續(xù)時間 int m_serial。 //線程類別(判斷是讀者線程還是寫者線程) double delay。W39。函數(shù)原型:VOID LeaveCriticalSection (LPCRITICAL_SECTION lpCriticalSection)。進(jìn)程負(fù)責(zé)分配臨界區(qū)對象使用的存儲空間,這可以通過聲明CRITICAL_SECTION類型的變量來完成。你不可以把1ReleaseCount加上lpPreviousCount,就當(dāng)做是semaphore的當(dāng)前值,因為其他線程可能已經(jīng)改變了Semaphore的值。該值不可以是負(fù)值或0。不論哪一種情況,GetLastError都會傳回一個合理的結(jié)果。函數(shù)功能:該函數(shù)是創(chuàng)建一個有名或者無名信號對象??赡苤等缦拢篧AIT_OBJECT_0到WAIT_OB JECT0+ nCount1:如果bWaitAll為TRUE,那么返回值表明所有指定對象的狀態(tài)為信號態(tài)。如果為FALSE,當(dāng)由lpHandles指向的數(shù)組里的任—對象為信號態(tài)時,函數(shù)返回。消息廣播被發(fā)送到系統(tǒng)的所有窗口。如果等待條件并沒有被滿足,調(diào)用線程進(jìn)入—個高效的等待狀態(tài),當(dāng)?shù)却凉M足條件時占用非常少的處理器時間。返回值:如果函數(shù)調(diào)用成功,返回值表明引起函數(shù)返回的事件。hHandle:等待對象句柄。創(chuàng)建該互斥對象的線程也擁有互斥對象。函數(shù)功能:該函數(shù)放棄指定互斥對象的所有權(quán)。以下為共享對象機(jī)制:當(dāng)互斥對象處于信號態(tài),等待的線程獲得對該對象的所有權(quán)時,此互斥對象的狀態(tài)被設(shè)置為非信號態(tài),等待函數(shù)返回。調(diào)用進(jìn)程中的任何線程可以在調(diào)用等待函數(shù)時指定互斥對象句柄。如果參數(shù)lpMutexAttributes不為NULL,它決定句柄是否解除繼承,但是其安全描述符成員被忽略。否則,調(diào)用線程不能獲得互斥對象所屬身份。參數(shù):dwMilliseconds:定義掛起執(zhí)行線程的時間,以毫秒(ms)為單位。調(diào)用該函數(shù)后(或者直接地調(diào)用,或者從一個線程過程返回),當(dāng)前線程的堆棧取消分配,線程終止。該線程對象被設(shè)為發(fā)信號狀態(tài),以滿足在該對象上等待的所有進(jìn)程。若提供了安全性描述符,則以后使用該句柄時,將在授權(quán)訪問以前執(zhí)行訪問檢查。dwCreationFlags:定義控制進(jìn)程創(chuàng)建的附加標(biāo)志。若該值為0,或小于默認(rèn)時提交的大小,默認(rèn)情況是使用與調(diào)用線程同樣的大?。嗟男畔?,請看Thread Stack Size。該結(jié)構(gòu)決定了返回的句柄是否可被子進(jìn)程繼承。當(dāng)寫者發(fā)出寫請求時,必須申請臨界區(qū)對象的所有權(quán)。當(dāng)線程讀寫申請成功后,開始對共享資源的讀寫操作,該操作持續(xù)相應(yīng)時間后結(jié)束,并釋放共享資源。寫者優(yōu)先的附加限制:如果一個讀者申請進(jìn)行讀操作時已有另一寫者在等待訪問共享資源,則該讀者必須等到?jīng)]有寫者處于等待狀態(tài)后才能開始讀操作。操作系統(tǒng)課程設(shè)計——讀者寫者問題一、實(shí)習(xí)要求在windows 2000環(huán)境下,創(chuàng)建一個控制臺進(jìn)程,此進(jìn)程包含n個線程。讀者優(yōu)先的附加限制:如果一個讀者申請進(jìn)行讀操作時已有另一個讀者正在進(jìn)行讀操作,則該讀者可直接開始讀操作。第四字段為一個正數(shù),表示讀寫操作的持續(xù)時間。另外,為了實(shí)現(xiàn)寫—寫互斥,需要增加一個臨界區(qū)對象RP_Write。lpThreadAttributes:指向一個LPSECURITY_ATTRIBUTES結(jié)構(gòu)。系統(tǒng)將該值舍入為最近的頁。若未提供安全性描述符,則該句柄可被任何要求一個線程對象句柄的函數(shù)所使用。一個線程終止時。備注:調(diào)用ExitThread函數(shù),是結(jié)束—個線程的較好的方法。函數(shù)原型:VOID Sleep (DWORD dwMulliseconds);參數(shù):函數(shù)原型:HANDLE CreateMutex (LPSECURITY_ATTRIBUTES lpMutexAttributes,BOOL bInitialOwner, LPCTSTR lpName)。如果該值為TRUE,并且調(diào)用者創(chuàng)建互斥對象,那么調(diào)用線程獲得互斥對象所屬身份。在這種情況下,由于參數(shù)bInitialOwner已被創(chuàng)建進(jìn)程所設(shè)置,該參數(shù)被忽略。備注:由函數(shù)CreateMutex返回的句柄有MUTEX_ALL_ACCESS權(quán)限可以去訪問新的互斥對象,并且可用在請求互斥對象句柄的任何函數(shù)中。否則,線程必須使用等待函數(shù)來請求所有權(quán)。由于多進(jìn)程能夠擁有相同互斥對象的句柄,通過使用這個對象,可使多進(jìn)程同步。當(dāng)最后一個句柄被關(guān)閉時,互斥對象被銷毀。一個線程通過調(diào)用等待函數(shù)擁有互斥對象。參數(shù):如果dwMillseconds是0,函數(shù)測試對象的狀態(tài)并立刻返回;如果dwMillseconds是INFINITE,函數(shù)從不超時。備注:WaitForSingleObjects函數(shù)決定等待條
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1