91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 2.58MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2023-08-14
  • 語言: 其他
  • 標簽: 算法實現??

資源簡介

進程同步實驗——生產者與消費者問題算法實現

資源截圖

代碼片段和文件信息

??/*————————————————————————————————
??在同一個進程地址空間內執行的兩個線程。生產者線程生產物品,
??然后將物品放置在一個空緩沖區中供消費者線程消費。消費者線
??程從緩沖區中獲得物品,然后釋放緩沖區。當生產者線程生產物
??品時,如果沒有空緩沖區可用,那么生產者線程必須等待消費者
??線程釋放出一個空緩沖區。當消費者線程消費物品時,如果沒有
??滿的緩沖區,那么消費者線程將被阻塞,直到新的物品被生產出
??來。
——————————————————————————————————*/
??#include???
??#include
??#include???
????
??const???unsigned???short???SIZE_OF_BUFFER???=???10;???//緩沖區長度???
??unsigned???short???ProductID???=???0;?????????//產品號???
??unsigned???short???ConsumeID???=???0;?????????//將被消耗的產品號???
??unsigned???short???in???=???0;?????????????//產品進緩沖區時的緩沖區下標???
??unsigned???short???out???=???0;?????????????//產品出緩沖區時的緩沖區下標???
????
??int???g_buffer[SIZE_OF_BUFFER];?????????//緩沖區是個循環隊列???
??bool???g_continue???=???true;?????????????//使程序跳出循環,控制程序結束???
??HANDLE???g_hMutex;???????????????//用于線程間的互斥???
??HANDLE???g_hFullSemaphore;???????????//當緩沖區滿時迫使生產者等待???
??HANDLE???g_hEmptySemaphore;???????????//當緩沖區空時迫使消費者等待???
????
??DWORD???WINAPI???Producer(LPVOID);?????????//生產者線程???
??DWORD???WINAPI???Consumer(LPVOID);?????????//消費者線程???
????
??int???main()???
??{???
??????????//創建各個互斥信號???
??????????g_hMutex???=???CreateMutex(NULLFALSENULL);??//?三個參數分別為:指向安全屬性的指針?
//初始化互斥對象的所有者指向互斥對象名的指針
??????????//創建緩沖區滿的信號量
??????????g_hFullSemaphore???=???CreateSemaphore(NULLSIZE_OF_BUFFER-1SIZE_OF_BUFFER-1NULL);?
//四個參數分別為:表示是否允許繼承、
//設置信號機的初始計數、設置信號機的
?? //最大計數、指定信號機對象的名稱(-1是因為計數從0開始)
??????????//創建緩沖區空的信號量
??g_hEmptySemaphore???=???CreateSemaphore(NULL0SIZE_OF_BUFFER-1NULL);???
????
??????????//調整下面的數值,可以發現,當生產者個數多于消費者個數時,???
??????????//生產速度快,生產者經常等待消費者;反之,消費者經常等待?????
??????????const???unsigned???short???PRODUCERS_COUNT???=???3;?????//生產者的個數???
??????????const???unsigned???short???CONSUMERS_COUNT???=???3;?????//消費者的個數???
????
??????????//總的線程數???
??????????const???unsigned???short???THREADS_COUNT???=???PRODUCERS_COUNT+CONSUMERS_COUNT;???
????
??????????HANDLE???hThreads[PRODUCERS_COUNT];???//各線程的handle???
??????????DWORD???producerID[CONSUMERS_COUNT];???//生產者線程的標識符???
??????????DWORD???consumerID[THREADS_COUNT];???//消費者線程的標識符???
????
??????????//為每一個生產者創建生產者線程???
??????????for(int?i=0;i??????????????????hThreads[i]=CreateThread(NULL0ProducerNULL0&producerID[i]);???
??????????????????if???(hThreads[i]==NULL)???return???-1;???
??????????}???
??????????//為每一個消費者創建消費者線程???
??????????for(int?j=0;j??????????????????hThreads[PRODUCERS_COUNT+j]=CreateThread(NULL0ConsumerNULL0&consumerID[j]);???
??????????????????if???(hThreads[j]==NULL)???return???-1;???
??????????}???
????
??????????while(g_continue){???
??????????????????if(getchar()){???//按回車后終止程序運行???
??????????????????????????g_continue???=???false;???
??????????????????}???
??????????}???
????
??????????return???0;???
??}???
????
??//生產一個產品。簡單模擬了一下,僅輸出新產品的ID號???
??void???Produce()???
??{???
??????

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????184436??2009-01-04?20:40??Debug\sx3.exe

?????文件?????229928??2009-01-04?20:40??Debug\sx3.ilk

?????文件??????25242??2009-01-04?20:40??Debug\sx3.obj

?????文件????3616828??2009-01-04?20:40??Debug\sx3.pch

?????文件?????394240??2009-01-04?20:40??Debug\sx3.pdb

?????文件?????148480??2009-01-04?20:40??Debug\vc60.idb

?????文件??????86016??2009-01-04?20:40??Debug\vc60.pdb

?????文件?????208955??2007-12-31?21:33??sx3(1消費者,3個生產者).exe

?????文件?????208954??2008-01-03?20:43??sx3(3個生產者,4個消費者,15個緩沖區).exe

?????文件?????208955??2007-12-31?21:37??sx3(3個消費者,1個生產者).exe

?????文件?????208955??2007-12-31?21:38??sx3(3個消費者,3個生產者).exe

?????文件???????6847??2007-12-31?22:00??sx3.cpp

?????文件???????3365??2009-01-04?20:40??sx3.dsp

?????文件????????531??2009-01-04?20:41??sx3.dsw

?????文件??????33792??2009-01-04?20:41??sx3.ncb

?????文件??????48640??2009-01-04?20:41??sx3.opt

?????文件????????731??2009-01-04?20:40??sx3.plg

?????文件????1412608??2009-01-03?21:11??操作系統原理實驗報告.doc

?????目錄??????????0??2009-01-04?20:40??Debug

-----------?---------??----------?-----??----

??????????????7027503????????????????????19


評論

共有 條評論