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

正文內(nèi)容

生產(chǎn)者與消費(fèi)者問題0(已修改)

2025-04-06 06:03 本頁(yè)面
 

【正文】 操作系統(tǒng)課程設(shè)計(jì)報(bào)告題目:生產(chǎn)者與消費(fèi)者問題班級(jí): $$$$$$$$$$學(xué)號(hào): 0804010214姓名: $$$$$指導(dǎo)教師$$$$$2010113 一、題目(生產(chǎn)者與消費(fèi)者問題)題目分析:生產(chǎn)者消費(fèi)者問題是一個(gè)經(jīng)典的進(jìn)程同步問題,該問題最早由Dijkstra提出,用以演示他提出的信號(hào)量機(jī)制。要求設(shè)計(jì)在同一個(gè)進(jìn)程地址空間內(nèi)執(zhí)行的兩個(gè)進(jìn)程。生產(chǎn)者進(jìn)程生產(chǎn)物品,然后將物品放置在一個(gè)空緩沖區(qū)中供消費(fèi)者進(jìn)程消費(fèi)。消費(fèi)者進(jìn)程從緩沖區(qū)中獲得物品,然后釋放緩沖區(qū)。當(dāng)生產(chǎn)者進(jìn)程生產(chǎn)物品時(shí),如果沒有空緩沖區(qū)可用,那么生產(chǎn)者進(jìn)程必須等待消費(fèi)者進(jìn)程釋放出一個(gè)空緩沖區(qū)。當(dāng)消費(fèi)者進(jìn)程消費(fèi)物品時(shí),如果沒有滿的緩沖區(qū),那么消費(fèi)者進(jìn)程將被阻塞,直到新的物品被生產(chǎn)出來(lái)。功能要求:根據(jù)進(jìn)程同步機(jī)制,編寫一個(gè)解決上述問題的程序,可顯示緩沖池狀態(tài)、放數(shù)據(jù)、取數(shù)據(jù)等過程。鍵盤輸入進(jìn)程數(shù)和緩沖區(qū)數(shù)目,可調(diào)度生產(chǎn)者、消費(fèi)者的活動(dòng)及顯示進(jìn)程的當(dāng)前狀態(tài)。為實(shí)現(xiàn)進(jìn)程互斥的進(jìn)入自己的臨界區(qū),所有同步機(jī)制都應(yīng)遵循以下四條準(zhǔn)則:(1)空閑讓進(jìn),(2)忙著等待,(3)有限等待(4)讓權(quán)等待。(1) CreateThreadl 功能——?jiǎng)?chuàng)建一個(gè)在調(diào)用進(jìn)程的地址空間中執(zhí)行的線程l 格式HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes,DWORD dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParamiter,DWORD dwCreationFlags,Lpdword lpThread )。l 參數(shù)說明lpThreadAttributes——指向一個(gè)LPSECURITY_ATTRIBUTES(新線程的安全性描述符)。dwStackSize——定義原始堆棧大小。lpStartAddress——指向使用LPTHRAED_START_ROUTINE類型定義的函數(shù)。lpParamiter——定義一個(gè)給進(jìn)程傳遞參數(shù)的指針。dwCreationFlags——定義控制線程創(chuàng)建的附加標(biāo)志。lpThread——保存線程標(biāo)志符(32位)(2) CreateMutexl 功能——?jiǎng)?chuàng)建一個(gè)命名或匿名的互斥量對(duì)象l 格式HANDLE CreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes,BOOL bInitialOwner,LPCTSTR lpName)。l 參數(shù)說明lpMutexAttributes——必須取值NULL。bInitialOwner——指示當(dāng)前線程是否馬上擁有該互斥量(即馬上加鎖)。lpName——互斥量名稱。(3) CreateSemaphorel 功能——?jiǎng)?chuàng)建一個(gè)命名或匿名的信號(hào)量對(duì)象l 格式HANDLE CreateSemaphore(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCTSTR lpName )。l 參數(shù)說明lpSemaphoreAttributes——必須取值NULL。lInitialCount——信號(hào)量的初始值。該值大于0,但小于lMaximumCount指定的最大值。lMaximumCount——信號(hào)量的最大值。lpName——信號(hào)量名稱。(4) WaitForSingleObjectl 功能——使程序處于等待狀態(tài),直到信號(hào)量hHandle出現(xiàn)(即其值大于等于1)或超過規(guī)定的等待時(shí)間l 格式DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds)。l 參數(shù)說明hHandle——信號(hào)量指針。dwMilliseconds——等待的最長(zhǎng)時(shí)間(INFINITE為無(wú)限等待)。(5) ReleaseSemaphorel 功能——對(duì)指定信號(hào)量加上一個(gè)指定大小的量。成功執(zhí)行則返回非0值l 格式BOOL ReleaseSemaphore(HANDLE hSemaphore,LONG lReleaseCount,LPLONG lppreviousCount )。l 參數(shù)說明hSemaphore——信號(hào)量指針。lReleaseCount——信號(hào)量的增量。lppreviousCount——保存信號(hào)量當(dāng)前值。(6) ReleaseMutexl 功能——打開互斥鎖,即把互斥量加1。成功調(diào)用則返回0l 格式BOOL ReleaseMutex(HANDLE hMutex)。l 參數(shù)說明hMutex——互斥量指針。(7) InitializeCriticalSectionl 功能——初始化臨界區(qū)對(duì)象l 格式VOID InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection)。l 參數(shù)說明lpCriticalSection——指向臨界區(qū)對(duì)象的指針。(8) EnterCriticalSectionl 功能——等待指定臨界區(qū)對(duì)象的所有權(quán)l(xiāng) 格式VOID enterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)。l 參數(shù)說明lpCriticalSection——指向臨界區(qū)對(duì)象的指針。(9) LeaveCriticalSectionl 功能——釋放指定臨界區(qū)對(duì)象的所有權(quán)l(xiāng) 格式VOID LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)。l 參數(shù)說明lpCriticalSection——指向臨界區(qū)對(duì)象的指針。ProduceWait BufferWait ProductsConsume結(jié)束While produceWhile consumeBegin(1)所用技術(shù):應(yīng)用進(jìn)程同步技術(shù)—信號(hào)量,以生產(chǎn)者/消費(fèi)者模型為依據(jù),在Windows 環(huán)境下創(chuàng)建一個(gè)控制臺(tái)進(jìn)程,在該進(jìn)程中創(chuàng)建n個(gè)線程模擬生產(chǎn)者和消費(fèi)者,實(shí)現(xiàn)進(jìn)程(線程)的同步與互斥。應(yīng)用信號(hào)量機(jī)制實(shí)現(xiàn)生產(chǎn)者與消費(fèi)者進(jìn)程互斥的訪問緩沖區(qū),緩沖區(qū)為一個(gè)循環(huán)隊(duì)列。(2)實(shí)現(xiàn)功能:鍵盤輸入進(jìn)程數(shù)和緩沖區(qū)數(shù)目,可調(diào)度生產(chǎn)者、消費(fèi)者的活動(dòng)及顯示進(jìn)程的當(dāng)前狀態(tài)。設(shè)計(jì)結(jié)論和心得(1)結(jié)論:在同一個(gè)進(jìn)程地址空間內(nèi)執(zhí)行的兩個(gè)線程。生產(chǎn)者線程生產(chǎn)物品,然后將物品放置在一個(gè)空緩沖區(qū)中供消費(fèi)者線程消費(fèi)。消費(fèi)者線程從緩沖區(qū)中獲得物品,然后釋放緩沖區(qū)。當(dāng)生產(chǎn)者線程生產(chǎn)物品時(shí),如果沒有空緩沖區(qū)可用,那么生產(chǎn)者線程必須等待消費(fèi)者線程釋放出一個(gè)空緩沖區(qū)。當(dāng)消費(fèi)者線程消費(fèi)物品時(shí),如果沒有滿的緩沖區(qū),那么消費(fèi)者線程將被阻塞,直到新的物品被生產(chǎn)出來(lái)。(2)心得:通過課程設(shè)計(jì),進(jìn)一步學(xué)習(xí)并理解生產(chǎn)者/消費(fèi)者模型及其同步互斥規(guī)則,學(xué)習(xí)了解了windows同步對(duì)象及其特性,熟悉實(shí)驗(yàn)環(huán)境,掌握有關(guān)API的使用方法,同時(shí)熟悉對(duì)vc的使用,提高了分析問題以及解決問題的能力,通過學(xué)習(xí)相關(guān)知識(shí),擴(kuò)展了知識(shí)面。includeincludeincludeincludestringinclude//定義常量;//此程序允許的最大臨界區(qū)數(shù);define MAX_BUFFER_NUM 10//秒到微秒的乘法因子;define INTE_PER_SEC 1000//本程序允許的生產(chǎn)和消費(fèi)線程的總數(shù);define MAX_THREAD_NUM 64//定義一個(gè)結(jié)構(gòu),記錄在測(cè)試文件中指定的每一個(gè)線程的參數(shù)struct ThreadInfo{ int serial。 //線程序列號(hào) char entity。 //是P還是C double delay。 //線程延遲 int thread_request[MAX_THREAD_NUM]。 //線程請(qǐng)求隊(duì)列 int n_request。 //請(qǐng)求個(gè)數(shù)}。//全局變量的定義//臨界區(qū)對(duì)象的聲明,用于管理緩沖區(qū)的互斥訪問;CRITICAL_SECTION PC_Critical[MAX_BUFFER_NUM]。 int Buffer_Critical[MAX_BUFFER_NUM]。 //緩沖區(qū)聲明,用于存放產(chǎn)品;HANDLE h_Thread[MAX_THREAD_NUM]。 //用于存儲(chǔ)每個(gè)線程句柄的數(shù)組;ThreadInfo Thread_Info[MAX_THREAD_NUM]。 //線程信息數(shù)組;HANDLE empty_semaphore
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1