亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 操作.cpp

?? 同步生產者與消費者
?? CPP
字號:
#include<stdio.h> 
#include<iostream.h> 
#include<windows.h> 
#define BufferSize 15 
char Buffer[BufferSize]; 
int head,tail=0;//Buffer數組下標 
int count;//被使用的緩沖區數量 
HANDLE hMutex; 
HANDLE hNotFullEvent, hNotEmptyEvent;//用來同步生產者和消費者線程 
////////緩沖區存儲情況 
display(char a[15]) 
{ 
int i; 
cout<<"緩沖區存儲情況為:"<<endl; 
for (i=14;i>=0;i--){ 
cout<<"\t|----"<<a<<"----|"<<endl; 
} 
return 0;
} 

//p1 
void p1_Producer() 
{ 
int i; 
char ch; 
char p1[]={'a','A','b','B','c','C','D','d','E','e'}; 
if(tail<15){ 
for(i=0;i<10;i++){ 
while(1) { 

WaitForSingleObject(hMutex,INFINITE); 
if(count==BufferSize){ //緩沖區滿 
ReleaseMutex(hMutex); 
//等待直到緩沖區非滿 
WaitForSingleObject(hNotFullEvent,INFINITE); 
continue; 
} 
//得到互斥鎖且緩沖區非滿,跳出while循環 
break; 

} 
if (tail>14){ 
cout<<"緩沖區已滿,不能再存入數據!"<<endl; 
ReleaseMutex(hMutex); //結束臨界區 
PulseEvent(hNotEmptyEvent); //喚醒消費者線程 
} 
else{ 
//得到互斥鎖且緩沖區非滿,開始產生新數據 
cout<<"Producer p1:\t"<<p1<<endl; 
Buffer[tail]=p1; 
//tail=(tail+1)%BufferSize;///存放于緩沖區的位置 
display(Buffer); 
tail++; 
count++; 
cout<<"按ENTER繼續...."<<endl; 
ch=getchar(); 
ReleaseMutex(hMutex); //結束臨界區 
PulseEvent(hNotEmptyEvent); //喚醒消費者線程 
} 
} 
} 
} 
////////////////////////////////////////////////////////////////// 
//p2 
void p2_Producer() 
{ 
int i; 
char ch; 
char p2[]={'0','1','2','3','4','5','6','7','8','9'}; 
if(tail<15){ 
for(i=0;i<10;i++){ 
while(1) { 
ch=getchar(); 
WaitForSingleObject(hMutex,INFINITE); 
if(count==BufferSize){ // 緩沖區滿 
ReleaseMutex(hMutex); 
// 等待直到緩沖區非滿 
WaitForSingleObject(hNotFullEvent,INFINITE); 
continue; 
} 
// 得到互斥鎖且緩沖區非滿,跳出while循環 
break; 
} 
if (tail>14){ 
cout<<"緩沖區已滿,不能再存入數據!程序結束!"<<endl; 
ReleaseMutex(hMutex); //結束臨界區 
PulseEvent(hNotEmptyEvent); //喚醒消費者線程 
} 
else{ 
// 得到互斥鎖且緩沖區非滿,開始產生新數據 
cout<<"Producer p2:\t"<<p2<<endl; 
Buffer[tail]=p2; 
//tail=(tail+1)%BufferSize; 
display(Buffer); 
tail++; 
count++; 
cout<<"按ENTER繼續...."<<endl; 


ch=getchar(); 
ReleaseMutex(hMutex); // 結束臨界區 
PulseEvent(hNotEmptyEvent); // 喚醒消費者線程 
} 
} 
} 
} 
////////////////////////////////////////////////////////////////// 
//p3 
void p3_Producer() 
{ 
int i; 
char ch; 
char p3[]={'!','#','$','%','&','*','+','-','.','/'}; 
if(tail<15){ 
for(i=0;i<10;i++){ 
while(1) { 
ch=getchar(); 
WaitForSingleObject(hMutex,INFINITE); 
if(count==BufferSize){ // 緩沖區滿 
ReleaseMutex(hMutex); 
// 等待直到緩沖區非滿 
WaitForSingleObject(hNotFullEvent,INFINITE); 
continue; 
} 
// 得到互斥鎖且緩沖區非滿,跳出while循環 
break; 
} 
if (tail>14){ 
cout<<"緩沖區已滿,不能再存入數據!程序結束!"<<endl; 
ReleaseMutex(hMutex); //結束臨界區 
PulseEvent(hNotEmptyEvent); //喚醒消費者線程 
} 
else{ 
// 得到互斥鎖且緩沖區非滿,開始產生新數據 
cout<<"Producer p3:\t"<<p3<<endl; 
Buffer[tail]=p3; 
//tail=(tail+1)%BufferSize; 
display(Buffer); 
tail++; 
count++; 
cout<<"按ENTER繼續...."<<endl; 


ch=getchar(); 
ReleaseMutex(hMutex); // 結束臨界區 
PulseEvent(hNotEmptyEvent); // 喚醒消費者線程 
} 
} 
} 
} 
////////////////////////////////////////////////////////////////// 
//c1 
void c1_Consumer() 
{ 
int i,j,k; 
char result,ch; 
while(1){ 
ch=getchar(); 
WaitForSingleObject(hMutex,INFINITE); 
if(count==0){ // 沒有可以處理的數據 
ReleaseMutex(hMutex); // 釋放互斥鎖且等待 
// 等待直到緩沖區非空 
WaitForSingleObject(hNotEmptyEvent,INFINITE); 
} 
else {if(Buffer[head]==0) { 
cout<<"Consumer 0: 緩沖區的數據已全消費過一次,消費完畢!"<<endl; 


ReleaseMutex(hMutex); // 結束臨界區 
ExitThread(0); 
} 
else { // 獲得互斥鎖且緩沖區有數據,開始處理 
result=Buffer[head]; 
if(result>64&&result<70){ 
result=result+32; 
cout<<"Consumer c1:(大寫->小寫)\t "<<result<<endl; 
Buffer[head]='^';// '^'表示數據已被消費 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer); 
} 

if(result>96&&result<102){ 
result=result-32; 
cout<<"Consumer c1:(小寫->大寫)\t "<<result<<endl; 
Buffer[head]='^'; 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer); 
} 
if(result>47&&result<58){ 
cout<<"Consumer c1:(顯示字符)\t "<<result<<endl; 
Buffer[head]='^'; 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer);} 
if(result>32&&result<48){ 
cout<<"Consumer c1:(用符號打印出菱形) "<<endl; 
for(i=1;i<=(9+1)/2;i++) 
{ 
for(j=1;j<=40-i;j++) 
cout<<" "; 
for(k=1;k<=2*i-1;k++) 
cout<<result; 
cout<<endl; 
} 
for(i=1;i<=9/2;i++) 
{ 
for(j=1;j<=40-(9+1)/2+i;j++) 
cout<<" "; 
for(k=1;k<=9-2*i;k++) 
cout<<result; 
cout<<endl; 
} 
Buffer[head]='^'; 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer); 
} 


head=(head+1)%BufferSize; 
count--; 
cout<<"按ENTER繼續...."<<endl; 


ch=getchar(); 
ReleaseMutex(hMutex); // 結束臨界區 
PulseEvent(hNotFullEvent); // 喚醒生產者線程 
} 
} 
} 
} 
////////////////////////////////////////////////////////////////// 
//c2 
void c2_Consumer() 
{ 
int i,j,k; 
char result,ch; 
while(1){ 
WaitForSingleObject(hMutex,INFINITE); 
if(count==0){ // 沒有可以處理的數據 
ReleaseMutex(hMutex); // 釋放互斥鎖且等待 
// 等待直到緩沖區非空 
WaitForSingleObject(hNotEmptyEvent,INFINITE); 
} 
else {if(Buffer[head]==0) { 
cout<<"Consumer 0:緩沖區的數據已全消費過一次,消費完畢!"<<endl; 
ReleaseMutex(hMutex); // 結束臨界區 
ExitThread(0); 
} 
else { // 獲得互斥鎖且緩沖區有數據,開始處理 
result=Buffer[head]; 
if(result>64&&result<90){ 
result=result+32; 
cout<<"Consumer c2:(大寫->小寫)\t "<<result<<endl; 
Buffer[head]='^'; 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer); 
} 

if(result>96&&result<102){ 
result=result-32; 
cout<<"Consumer c2:(小寫->大寫)\t "<<result<<endl; 
Buffer[head]='^'; 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer);} 
if(result>47&&result<58){ 
cout<<"Consumed c2:(顯示字符)\t "<<result<<endl; 
Buffer[head]='^'; 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer);} 
if(result>32&&result<48){ 
cout<<"Consumer c2:(用符號打印出菱形) "<<endl; 
for(i=1;i<=(9+1)/2;i++) 
{ 
for(j=1;j<=40-i;j++) 
cout<<" "; 
for(k=1;k<=2*i-1;k++) 
cout<<result; 
cout<<endl; 
} 
for(i=1;i<=9/2;i++) 
{ 
for(j=1;j<=40-(9+1)/2+i;j++) 
cout<<" "; 
for(k=1;k<=9-2*i;k++) 
cout<<result; 
cout<<endl; 
} 
Buffer[head]='^'; 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer); 
} 

head=(head+1)%BufferSize; 
count--; 
cout<<"按ENTER繼續...."<<endl; 
ch=getchar(); 
ReleaseMutex(hMutex); // 結束臨界區 
PulseEvent(hNotFullEvent); // 喚醒生產者線程 
} 
} 
} 
} 
////////////////////////////////////////////////////////////////// 
//c3 
void c3_Consumer() 
{ 
int i,j,k; 
char result,ch; 
while(1){ 
WaitForSingleObject(hMutex,INFINITE); 
if(count==0){ // 沒有可以處理的數據 
ReleaseMutex(hMutex); // 釋放互斥鎖且等待 
// 等待直到緩沖區非空 
WaitForSingleObject(hNotEmptyEvent,INFINITE); 
} 
else {if(Buffer[head]==0) { 
cout<<"Consumer 0: 緩沖區的數據已全消費過一次,消費完畢!"<<endl; 
ReleaseMutex(hMutex); // 結束臨界區 
ExitThread(0); 
} 
else { // 獲得互斥鎖且緩沖區有數據,開始處理 
result=Buffer[head]; 
if(result>64&&result<70){ 
result=result+32; 
cout<<"Consumer c3:(大寫->小寫)\t "<<result<<endl; 
Buffer[head]='^'; 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer);} 

if(result>96&&result<102){ 
result=result-32; 
cout<<"Consumer c3:(小寫->大寫)\t "<<result<<endl; 
Buffer[head]='^'; 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer);} 
if(result>47&&result<58){ 
cout<<"Consumer c1:(顯示字符)\t "<<result<<endl; 
Buffer[head]='^'; 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer); 
} 
if(result>32&&result<48){ 
cout<<"Consumer c3:(用符號打印出菱形) "<<endl; 
for(i=1;i<=(7+1)/2;i++) 
{ 
for(j=1;j<=40-i;j++) 
cout<<" "; 
for(k=1;k<=2*i-1;k++) 
cout<<result; 
cout<<endl; 
} 
for(i=1;i<=7/2;i++) 
{ 
for(j=1;j<=40-(7+1)/2+i;j++) 
cout<<" "; 
for(k=1;k<=7-2*i;k++) 
cout<<result; 
cout<<endl; 
} 
Buffer[head]='^'; 
cout<<"'^'表示數據已被消費"<<endl; 
display(Buffer); 
} 
head=(head+1)%BufferSize; 
count--; 
cout<<"按ENTER繼續...."<<endl; 


ch=getchar(); 
ReleaseMutex(hMutex); // 結束臨界區 
PulseEvent(hNotFullEvent); // 喚醒生產者線程 
} 
} 
} 
} 
////////////////////////////////////////////////////////////////// 
//主函數 
void main() 
{ 
HANDLE hThreadVector[6]; 
DWORD ThreadID; 
count = 0; 
head = 0; 
tail = 0; 
hMutex=CreateMutex(NULL,FALSE,NULL); 
hNotFullEvent=CreateEvent(NULL,TRUE,FALSE,NULL); 
hNotEmptyEvent=CreateEvent(NULL,TRUE,FALSE,NULL); 
hThreadVector[0]=CreateThread (NULL, 0,(LPTHREAD_START_ROUTINE) p1_Producer,NULL, 0, (LPDWORD)&ThreadID); 
hThreadVector[1]=CreateThread (NULL, 0,(LPTHREAD_START_ROUTINE) c1_Consumer,NULL, 0, (LPDWORD)&ThreadID); 
hThreadVector[3]=CreateThread (NULL, 0,(LPTHREAD_START_ROUTINE) p2_Producer,NULL, 0, (LPDWORD)&ThreadID); 
hThreadVector[4]=CreateThread (NULL, 0,(LPTHREAD_START_ROUTINE) c2_Consumer,NULL, 0, (LPDWORD)&ThreadID); 
hThreadVector[5]=CreateThread (NULL, 0,(LPTHREAD_START_ROUTINE) p3_Producer,NULL, 0, (LPDWORD)&ThreadID); 
hThreadVector[5]=CreateThread (NULL, 0,(LPTHREAD_START_ROUTINE) c3_Consumer,NULL, 0, (LPDWORD)&ThreadID); 
WaitForMultipleObjects(2,hThreadVector,TRUE,INFINITE); 
//cout<<"**********************Finish*************************"<<endl; 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级日韩免费不卡| 精品处破学生在线二十三| 免费成人小视频| 国产乱码精品一区二区三区五月婷| 久久久亚洲高清| 欧美日本国产视频| eeuss鲁片一区二区三区在线观看| 日日摸夜夜添夜夜添国产精品| 中文字幕av不卡| 日韩精品一区二区三区视频 | 日本一道高清亚洲日美韩| 欧美激情一区二区三区| 日韩免费视频线观看| 91极品视觉盛宴| 99久久免费国产| 国产一区二区电影| 六月丁香婷婷久久| 亚洲夂夂婷婷色拍ww47| 国产精品视频一二三区| 91国产丝袜在线播放| 国产**成人网毛片九色 | 性感美女久久精品| 亚洲精品视频一区二区| 国产欧美日韩另类一区| ww久久中文字幕| 日韩无一区二区| 欧美日韩午夜在线| 91久久精品一区二区三| 91丨九色porny丨蝌蚪| 国产91在线观看| 国产成人精品综合在线观看| 国产一区在线观看麻豆| 麻豆成人av在线| 久久精品国产网站| 免费成人av在线播放| 日本成人在线视频网站| 天涯成人国产亚洲精品一区av| 亚洲第一狼人社区| 亚洲bdsm女犯bdsm网站| 亚洲妇熟xx妇色黄| 亚洲一区二区不卡免费| 亚洲高清免费观看| 三级成人在线视频| 麻豆成人免费电影| 韩国欧美一区二区| 国产一二三精品| 丁香亚洲综合激情啪啪综合| 波多野结衣中文字幕一区二区三区 | 国产日韩综合av| 国产精品短视频| 夜夜嗨av一区二区三区中文字幕| 亚洲猫色日本管| 亚洲午夜精品17c| 亚洲h精品动漫在线观看| 天堂资源在线中文精品| 欧美aa在线视频| 国精产品一区一区三区mba桃花 | 国产精品高清亚洲| 亚洲欧美色综合| 午夜精品久久久久久久久久| 日本欧美在线观看| 国产精品原创巨作av| 不卡在线观看av| 欧美视频日韩视频| 欧美成人a在线| 国产精品久久久久久久久晋中 | 日韩欧美国产综合一区| 亚洲精品在线电影| 1024成人网| 丝袜亚洲另类欧美| 国产一区二区福利视频| www..com久久爱| 欧美日韩国产另类一区| 亚洲精品一区二区三区蜜桃下载| 国产精品日韩成人| 亚洲成av人片在www色猫咪| 国产自产高清不卡| 色综合中文字幕国产 | 日韩丝袜美女视频| 欧美极品另类videosde| 亚洲在线一区二区三区| 久久国产成人午夜av影院| 99精品欧美一区二区三区综合在线| 欧美日韩精品欧美日韩精品| 精品99一区二区| 亚洲一区二区av在线| 国产精品一品视频| 欧美男同性恋视频网站| 久久精品亚洲乱码伦伦中文| 亚洲va天堂va国产va久| 成人做爰69片免费看网站| 欧美精品aⅴ在线视频| 国产精品乱子久久久久| 奇米精品一区二区三区在线观看一| 不卡电影一区二区三区| 欧美成人精品1314www| 亚洲精品成人少妇| 国产精品18久久久久久久久久久久| 欧美三级三级三级爽爽爽| 欧美韩日一区二区三区| 日本色综合中文字幕| 色诱亚洲精品久久久久久| 国产日产欧美一区二区视频| 日本va欧美va精品发布| 欧美中文字幕一区| 日本一区二区免费在线| 久久99精品国产麻豆婷婷洗澡| 在线观看免费一区| 国产精品国产三级国产a| 激情综合网激情| 亚洲午夜一二三区视频| 国产69精品久久777的优势| 日韩一级高清毛片| 亚洲午夜精品久久久久久久久| 成人午夜精品一区二区三区| 欧美精品一区在线观看| 日本欧美肥老太交大片| 欧美色网站导航| 一区二区三区在线视频观看58| 成人动漫精品一区二区| 久久奇米777| 国内精品国产三级国产a久久| 欧美人伦禁忌dvd放荡欲情| 一区二区三区四区视频精品免费| jlzzjlzz亚洲日本少妇| 久久综合九色综合欧美就去吻| 奇米一区二区三区av| 777欧美精品| 亚洲成人第一页| 色综合久久88色综合天天| 成人欧美一区二区三区白人| 国产激情91久久精品导航| 久久久美女毛片| 国产一区二区三区免费观看| 精品久久久久久久久久久久包黑料| 日韩国产欧美在线视频| 4438x亚洲最大成人网| 婷婷六月综合亚洲| 717成人午夜免费福利电影| 性久久久久久久久久久久| 欧美日韩夫妻久久| 秋霞影院一区二区| 欧美成人国产一区二区| 欧美精品vⅰdeose4hd| 日日骚欧美日韩| 日韩精品一区二区三区蜜臀 | 日韩精品一区二区三区在线观看| 强制捆绑调教一区二区| 精品美女一区二区| 国产美女视频91| 国产精品麻豆网站| 91视频精品在这里| 亚洲午夜一区二区三区| 91精品国产综合久久精品| 麻豆国产一区二区| 国产欧美一区二区三区在线看蜜臀 | 日日骚欧美日韩| 日韩精品专区在线影院重磅| 国产盗摄一区二区三区| 中文字幕一区二区日韩精品绯色 | 欧美哺乳videos| 国产在线麻豆精品观看| 国产精品美女久久久久久久久久久| 91片黄在线观看| 天天综合色天天| 久久婷婷成人综合色| 99久久精品免费| 日韩精品高清不卡| 久久看人人爽人人| 色综合天天天天做夜夜夜夜做| 亚洲国产日日夜夜| 久久你懂得1024| 色天天综合色天天久久| 美女久久久精品| 亚洲欧洲日韩在线| 欧美精品乱码久久久久久按摩| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美日韩精品综合在线| 麻豆久久一区二区| 国产精品久久久久一区| 欧美午夜理伦三级在线观看| 久国产精品韩国三级视频| 中文字幕一区二区三区av| 欧美一区午夜视频在线观看| 国产成人av影院| 性做久久久久久免费观看| 久久精品男人的天堂| 欧美日韩另类一区| 国产成人aaa| 全国精品久久少妇| 亚洲天堂av一区| 欧美v日韩v国产v| 色综合久久综合网97色综合| 久久99久久99| 亚洲一区二区三区四区在线观看 | 2023国产精品自拍| 欧美最猛性xxxxx直播| 国产91丝袜在线观看| 免费人成网站在线观看欧美高清| 国产精品亲子伦对白|