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)建讀者進程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)等待,浪費了CPU資源。請寫出寫者優(yōu)先結(jié)果,并進行分析七、課程設(shè)計任務學習Windows2000環(huán)境下多線程編程的相關(guān)知識。注意:由于在以往的課程設(shè)計中部分同學存在抄襲現(xiàn)象,本次課程設(shè)計提交任務時除了提交程序和課程設(shè)計報告之外,還要接受教師的提問。Writer thread 2 begins to write to the file.當讀者1,3和4讀完文件后,寫者2開始與文件。另一種方法是增加循環(huán)變量threadCount(線程的個數(shù)),每個線程結(jié)束的時候就會執(zhí)行語句threadCount。用EnterCriticalSection函數(shù)可以進入一個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)。進程負責分配臨界區(qū)對象使用的存儲空間,這可以通過聲明CRITICAL_SECTION類型的變量來完成。你不可以把1ReleaseCount加上lpPreviousCount,就當做是semaphore的當前值,因為其他線程可能已經(jīng)改變了Semaphore的值。該值不可以是負值或0。不論哪一種情況,GetLastError都會傳回一個合理的結(jié)果。函數(shù)功能:該函數(shù)是創(chuàng)建一個有名或者無名信號對象??赡苤等缦拢篧AIT_OBJECT_0到WAIT_OB JECT0+ nCount1:如果bWaitAll為TRUE,那么返回值表明所有指定對象的狀態(tài)為信號態(tài)。如果為FALSE,當由lpHandles指向的數(shù)組里的任—對象為信號態(tài)時,函數(shù)返回。消息廣播被發(fā)送到系統(tǒng)的所有窗口。如果等待條件并沒有被滿足,調(diào)用線程進入—個高效的等待狀態(tài),當?shù)却凉M足條件時占用非常少的處理器時間。返回值:如果函數(shù)調(diào)用成功,返回值表明引起函數(shù)返回的事件。hHandle:等待對象句柄。創(chuàng)建該互斥對象的線程也擁有互斥對象。函數(shù)功能:該函數(shù)放棄指定互斥對象的所有權(quán)。以下為共享對象機制:當互斥對象處于信號態(tài),等待的線程獲得對該對象的所有權(quán)時,此互斥對象的狀態(tài)被設(shè)置為非信號態(tài),等待函數(shù)返回。調(diào)用進程中的任何線程可以在調(diào)用等待函數(shù)時指定互斥對象句柄。如果參數(shù)lpMutexAttributes不為NULL,它決定句柄是否解除繼承,但是其安全描述符成員被忽略。否則,調(diào)用線程不能獲得互斥對象所屬身份。參數(shù):dwMilliseconds:定義掛起執(zhí)行線程的時間,以毫秒(ms)為單位。調(diào)用該函數(shù)后(或者直接地調(diào)用,或者從一個線程過程返回),當前線程的堆棧取消分配,線程終止。該線程對象被設(shè)為發(fā)信號狀態(tài),以滿足在該對象上等待的所有進程。若提供了安全性描述符,則以后使用該句柄時,將在授權(quán)訪問以前執(zhí)行訪問檢查。dwCreationFlags:定義控制進程創(chuàng)建的附加標志。若該值為0,或小于默認時提交的大小,默認情況是使用與調(diào)用線程同樣的大?。嗟男畔?,請看Thread Stack Size。該結(jié)構(gòu)決定了返回的句柄是否可被子進程繼承。當寫者發(fā)出寫請求時,必須申請臨界區(qū)對象的所有權(quán)。當線程讀寫申請成功后,開始對共享資源的讀寫操作,該操作持續(xù)相應時間后結(jié)束,并釋放共享資源。寫者優(yōu)先的附加限制:如果一個讀者申請進行讀操作時已有另一寫者在等待訪問共享資源,則該讀者必須等到?jīng)]有寫者處于等待狀態(tài)后才能開始讀操作。操作系統(tǒng)課程設(shè)計——讀者寫者問題一、實習要求在windows 2000環(huán)境下,創(chuàng)建一個控制臺進程,此進程包含n個線程。讀者優(yōu)先的附加限制:如果一個讀者申請進行讀操作時已有另一個讀者正在進行讀操作,則該讀者可直接開始讀操作。第四字段為一個正數(shù),表示讀寫操作的持續(xù)時間。另外,為了實現(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)建進程所設(shè)置,該參數(shù)被忽略。備注:由函數(shù)CreateMutex返回的句柄有MUTEX_ALL_ACCESS權(quán)限可以去訪問新的互斥對象,并且可用在請求互斥對象句柄的任何函數(shù)中。否則,線程必須使用等待函數(shù)來請求所有權(quán)。由于多進程能夠擁有相同互斥對象的句柄,通過使用這個對象,可使多進程同步。當最后一個句柄被關(guān)閉時,互斥對象被銷毀。一個線程通過調(diào)用等待函數(shù)擁有互斥對象。參數(shù):如果dwMillseconds是0,函數(shù)測試對象的狀態(tài)并立刻返回;如果dwMillseconds是INFINITE,函數(shù)從不超時。備注:WaitForSingleObjects函數(shù)決定等待條
點擊復制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1