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

正文內(nèi)容

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

2023-04-09 02:43:17 本頁面
 

【正文】 果函數(shù)調(diào)用成功,返回值是互斥對象句柄;如果函數(shù)調(diào)用之前,有名互斥對象已存在,那么函數(shù)給已存在的對象返回一個句柄,并且函數(shù)GetLastError返回ERROR_ ALREADY_EXISTS。在這種情況下,由于參數(shù)bInitialOwner已被創(chuàng)建進程所設(shè)置,該參數(shù)被忽略。lpName:指向以NULL結(jié)尾的字符串,該字符串指定了互斥對象名。如果該值為TRUE,并且調(diào)用者創(chuàng)建互斥對象,那么調(diào)用線程獲得互斥對象所屬身份。在Windows NT中該結(jié)構(gòu)的LpSecuriyDescriptor成員指定新互斥對象的安全描述符。函數(shù)原型:HANDLE CreateMutex (LPSECURITY_ATTRIBUTES lpMutexAttributes,BOOL bInitialOwner, LPCTSTR lpName)。若取值為INFINITE則造成無限延遲。函數(shù)原型:VOID Sleep (DWORD dwMulliseconds);參數(shù):線程的終止狀態(tài)從STILL_ACTIVATE變?yōu)閐wExitCode參數(shù)的值。備注:調(diào)用ExitThread函數(shù),是結(jié)束—個線程的較好的方法。函數(shù)原型:VOID ExitThread (DWORD dwExitCode);參數(shù):一個線程終止時。若該函數(shù)返回,系統(tǒng)將默認地認為以調(diào)用ExitThread函數(shù)的方法終止該線程。若未提供安全性描述符,則該句柄可被任何要求一個線程對象句柄的函數(shù)所使用。該指針還表示遠程進程中線程的起始地址。系統(tǒng)將該值舍入為最近的頁。若lpThreadAttributes為NULL。lpThreadAttributes:指向一個LPSECURITY_ATTRIBUTES結(jié)構(gòu)。當(dāng)寫者擁有臨界區(qū)的所有權(quán)時,第一個讀者判斷完“readcount= =1”后阻塞在write上,其余的讀者由于等待對readcount的判斷,阻塞在mutex上。另外,為了實現(xiàn)寫—寫互斥,需要增加一個臨界區(qū)對象RP_Write。讀者優(yōu)先指的是除非有寫者在寫文件,否則讀者不需要等待。第四字段為一個正數(shù),表示讀寫操作的持續(xù)時間。每行測試數(shù)據(jù)包括四個字段,各個字段間用空格分隔。讀者優(yōu)先的附加限制:如果一個讀者申請進行讀操作時已有另一個讀者正在進行讀操作,則該讀者可直接開始讀操作。用信號量機制分別實現(xiàn)讀者優(yōu)先和寫者優(yōu)先的讀者—寫者問題。操作系統(tǒng)課程設(shè)計——讀者寫者問題一、實習(xí)要求在windows 2000環(huán)境下,創(chuàng)建一個控制臺進程,此進程包含n個線程。讀者—寫者問題的讀寫操作限制(包括讀者優(yōu)先和寫者優(yōu)先):1)寫—寫互斥,即不能有兩個寫者同時進行寫操作。寫者優(yōu)先的附加限制:如果一個讀者申請進行讀操作時已有另一寫者在等待訪問共享資源,則該讀者必須等到?jīng)]有寫者處于等待狀態(tài)后才能開始讀操作。第—字段為—個正整數(shù),表示線程序號。當(dāng)線程讀寫申請成功后,開始對共享資源的讀寫操作,該操作持續(xù)相應(yīng)時間后結(jié)束,并釋放共享資源。所以可以用—個整型變量readcount記錄當(dāng)前的讀者數(shù)目,用于確定是否需要釋放正在等待的寫者線程(當(dāng)readcount=0時,表明所有的讀者讀完,需要釋放寫者等待隊列中的一個寫者)。當(dāng)寫者發(fā)出寫請求時,必須申請臨界區(qū)對象的所有權(quán)。(請根據(jù)自己編寫的寫者優(yōu)先程序進行分析)四、相關(guān)API函數(shù)說明函數(shù)功能:該函數(shù)創(chuàng)建一個在調(diào)用進程的地址空間中執(zhí)行的線程。該結(jié)構(gòu)決定了返回的句柄是否可被子進程繼承。則線程獲得—個默認的安全性描述符。若該值為0,或小于默認時提交的大小,默認情況是使用與調(diào)用線程同樣的大小.更多的信息,請看Thread Stack Size。該函數(shù)必須存在于遠程進程中。dwCreationFlags:定義控制進程創(chuàng)建的附加標志。lpThreadId:指向—個32位值,它接收該線程的標識符。若提供了安全性描述符,則以后使用該句柄時,將在授權(quán)訪問以前執(zhí)行訪問檢查。使用GetExitcodeThread函數(shù)來獲得線程的返回值。該線程對象被設(shè)為發(fā)信號狀態(tài),以滿足在該對象上等待的所有進程。dwExitCode:定義調(diào)用線程的退出代碼。調(diào)用該函數(shù)后(或者直接地調(diào)用,或者從一個線程過程返回),當(dāng)前線程的堆棧取消分配,線程終止。線程結(jié)束時不必從操作系統(tǒng)中移去該線程對象。dwMilliseconds:定義掛起執(zhí)行線程的時間,以毫秒(ms)為單位。返回值:該函數(shù)沒有返回值。參數(shù):如果lpMutexAttributes為NULL,那么互斥對象獲得默認的安全描述符。否則,調(diào)用線程不能獲得互斥對象所屬身份。該名字的長度小于MAX_PATH且可以包含除反斜線(\)路徑分隔符以外的任何字符。如果參數(shù)lpMutexAttributes不為NULL,它決定句柄是否解除繼承,但是其安全描述符成員被忽略。否則,調(diào)用者創(chuàng)建互斥對象。調(diào)用進程中的任何線程可以在調(diào)用等待函數(shù)時指定互斥對象句柄。等待函數(shù)返回后,等待的線程被釋放,繼續(xù)向下執(zhí)行。當(dāng)互斥對象處于信號態(tài),等待的線程獲得對該對象的所有權(quán)時,此互斥對象的狀態(tài)被設(shè)置為非信號態(tài),等待函數(shù)返回。兩個或多個進程可以調(diào)用CreateMutex來創(chuàng)建同名的互斥對象,第一個進程實際創(chuàng)建互斥對象.以后的進程打開已存在的互斥對象的句柄。以下為共享對象機制:一個進程在調(diào)用OpenMutex或CreateMutex函數(shù)時能指定互斥對象名。函數(shù)功能:該函數(shù)放棄指定互斥對象的所有權(quán)。返回值:如果函數(shù)調(diào)用成功,那么返回值是非零值;如果函數(shù)調(diào)用失敗,那么返回值是零值。創(chuàng)建該互斥對象的線程也擁有互斥對象。這防止一個線程等待一個它已擁有的互斥對象時出現(xiàn)死鎖。hHandle:等待對象句柄。返回值:如果函數(shù)調(diào)用成功,返回值表明引起函數(shù)返回的事件。WAIT_TIMEOUT:超時,并且對象的狀態(tài)為非信號態(tài)。如果等待條件并沒有被滿足,調(diào)用線程進入—個高效的等待狀態(tài),當(dāng)?shù)却凉M足條件時占用非常少的處理器時間。例如,信號得計數(shù)減1。消息廣播被發(fā)送到系統(tǒng)的所有窗口。函數(shù)功能:WaitForMultipleObjects函數(shù)當(dāng)下列條件之一滿足時返回:(1)任意一個或全部指定對象處于信號態(tài);(2)超時間隔已過。若想獲得更多的信息,請查看Standard Access Rights。如果為FALSE,當(dāng)由lpHandles指向的數(shù)組里的任—對象為信號態(tài)時,函數(shù)返回。如果超時,即使bWaitAll參數(shù)指定的條件沒有滿足,函數(shù)也返回??赡苤等缦拢篧AIT_OBJECT_0到WAIT_OB JECT0+ nCount1:如果bWaitAll為TRUE,那么返回值表明所有指定對象的狀態(tài)為信號態(tài)。如果bWaitAll為FALSE,那么返回值減去WAIT_ABANDONED_0表明引起函數(shù)返回的放棄互斥對象的pHandles數(shù)組索引。函數(shù)功能:該函數(shù)是創(chuàng)建一個有名或者無名信號對象。如果是NULL就表示要使用默認屬性。lpName:Semaphore的名稱(一個字符串)。不論哪一種情況,GetLastError都會傳回一個合理的結(jié)果。參數(shù):該值不可以是負值或0。否則返回FALSE。你不可以把1ReleaseCount加上lpPreviousCount,就當(dāng)做是semaphore的當(dāng)前值,因為其他線程可能已經(jīng)改變了Semaphore的值。參數(shù):進程負責(zé)分配臨界區(qū)對象使用的存儲空間,這可以通過聲明CRITICAL_SECTION類型的變量來完成。函數(shù)原型:VOID EnterCriticalSection (LPCRITICAL_SECTION lpCriticalSecrion)。函數(shù)原型:VOID LeaveCriticalSection (LPCRITICAL_SECTION lpCriticalSection)。編譯運行即可。W39。 //臨界區(qū)CRITICAL_SECTION cs_Write。 //線程類別(判斷是讀者線程還是寫者線程) double delay。 h_Mutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,mutex_for_redcount)。 //讀文件持續(xù)時間 int m_serial。 Sleep(m_delay)。 if(readcount==1) { //第一個讀者,等待資源 EnterCriticalSection(amp。 Sleep(m_persist)。 if(readcount==0) { //如果所有的者讀完,喚醒寫者 LeaveCriticalSection(amp。 //延遲時間 DWORD m_persist。 m_persist=(DWORD)(((ThreadInfo*)(p))persist*INTE_PER_SEC)。RP_Write)。 //釋放資源 LeaveCriticalSection(amp。 //線程ID DWORD wait_for_all。 ThreadInfo thread_info[MAX_THREAD_NUM]。 //初始化臨界區(qū) ifstream inFile。 inFilethread_info[n_thread].entity。 } for(int i=0。) { //創(chuàng)建讀者線程 h_Thread[i]=CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)(RP_ReaderThread), amp。thread_info[i], 0,amp。}///////////////////////////////////////////////////寫者優(yōu)先——讀者線程//P:讀者線程信息void WP_ReaderThread(void *p){ //請編寫寫者優(yōu)先的讀者線程HANDLE h_Mutex1。
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1