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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.c

?? 所打動(dòng)叮叮咚咚 大 蘇武到四的 main.c
?? C
字號(hào):
#include "stdio.h"
#include <pthread.h>
#include <sys/time.h>
#include <malloc.h>
#include <stdlib.h>
#include <time.h>
#include   <math.h>


/*緩沖區(qū)的最大數(shù)*/
#define   Size   20


//記錄生產(chǎn)者的人數(shù)
int  sh=0;
//記錄消費(fèi)者的人數(shù)
int  xiao1=0;

/*緩沖區(qū)的結(jié)構(gòu)體*/
struct  huan{

int    isHave;    //標(biāo)記緩沖區(qū)是否有內(nèi)容,有內(nèi)容時(shí),消費(fèi)者才可以使用,
                                 //沒內(nèi)容時(shí),生產(chǎn)者才 可以往緩沖區(qū)內(nèi)寫東西
                                 //0表示沒有內(nèi)容,1表示有內(nèi)容

int   jud;          //標(biāo)志緩沖區(qū)是否在被使用中,0代表未被使用,1表示使用中

int  context;     //緩沖的內(nèi)容

};

//描述生產(chǎn)者,或者是消費(fèi)者
struct  person{

int  end;    //記錄是否完成任務(wù),0表示完成,1表示未完成任務(wù)

char  *  name;   /*線程名*/

pthread_t thread;   /*線程句柄*/

};


/*控制線程*/
//pthread_t thread;

//緩沖區(qū)
struct  huan * huan[20];

//生產(chǎn)者,最多有10個(gè)生產(chǎn)者
struct  person * sheng[10];

//消費(fèi)者,最多有10個(gè)消費(fèi)者
struct  person * xiao[10];

//要放進(jìn)入緩沖的內(nèi)容的標(biāo)記
int   context=1;




int timesj(int i)       //timesj函數(shù),可產(chǎn)生一個(gè)隨機(jī)數(shù)返回
{
  int xt;
  //為偽隨機(jī)數(shù)初始化
 
  xt = rand() %i+1;

  return xt;
}

//生產(chǎn)者往緩沖區(qū)內(nèi)放東西
//i是緩沖區(qū)的下標(biāo)值,context是要放入緩沖區(qū)的內(nèi)容,currentSheng是當(dāng)前放進(jìn)去的生產(chǎn)者
void  put(int i,int context, struct  person   *  currentSheng){
	huan[i]->jud=1;    //標(biāo)志緩沖區(qū)正在使用
	printf("\n生產(chǎn)者%s 往緩沖區(qū)%d 中寫入%d",&currentSheng->name,i,context);  
                                     //輸出當(dāng)前生產(chǎn)者的名字,緩沖區(qū)的下標(biāo)值和對(duì)應(yīng)緩沖區(qū)里的內(nèi)容
                      huan[i]->context=context;   // 往緩沖區(qū)中放入內(nèi)容
	huan[i]->isHave=1;     //表示有內(nèi)容
	huan[i]->jud=0;       //釋放空間,緩沖區(qū)未被使用
	}


//消費(fèi)者往緩沖區(qū)內(nèi)拿東西
//i是緩沖區(qū)的下標(biāo)值,currentXiao是當(dāng)前拿緩沖區(qū)東西的消費(fèi)者
int  take(int i,struct  person *  currentXiao){
	huan[i]->jud=1;    //標(biāo)志緩沖區(qū)正在使用
	printf("\n消費(fèi)者%s 往緩沖區(qū)%d 中拿出%d",&currentXiao->name,i,huan[i]->context);
                                                  //輸出當(dāng)前消費(fèi)者的名字,緩沖區(qū)的下標(biāo)值和對(duì)應(yīng)緩沖區(qū)里的內(nèi)容
	huan[i]->isHave=0;    //表示沒有內(nèi)容
	huan[i]->jud=0;        //釋放空間,緩沖區(qū)未被使用
	}


void  *  shengchan(struct  person  *  currentSheng){
	int  i=0;
	for(i=0;i<Size;i++){
                                            //如果緩沖區(qū)沒有內(nèi)容而且緩沖區(qū)未被使用
		if(huan[i]->isHave==0&&huan[i]->jud==0){
			put(i,context++,currentSheng);    //當(dāng)前生產(chǎn)者往里面放內(nèi)容
			
			sleep(timesj(3));    //掛起一段時(shí)間
                                                                    //線程沉睡若干秒,模仿線程因?yàn)楣ぷ鞫褂昧说臅r(shí)間
                                                                    
			} 
		}
	currentSheng->end=1;     //當(dāng)前生產(chǎn)者任務(wù)未完成
	}


void  *  xiaofei(struct  person *  currentXiao){
	int  i=0;
	while(context<20)
	for(i=0;i<Size;i++){
                                               //如果緩沖區(qū)有內(nèi)容而且緩沖區(qū)未被使用
		if(huan[i]->isHave==1&&huan[i]->jud==0){
			take(i,currentXiao);   //當(dāng)前消費(fèi)者取出緩沖區(qū)的內(nèi)容
			
			sleep(timesj(3));  //掛起一段時(shí)間
			//線程沉睡若干秒,模仿線程因?yàn)楣ぷ鞫褂昧说臅r(shí)間
			}
		}
	currentXiao->end=1;   //當(dāng)前消費(fèi)者未完成任務(wù)
	}


int  getNumber(){
	int   a;
 	a=-99999;
	while(1){

		scanf("%d",&a);
		getchar();

		if(a<=-99999){
		 printf("\n你輸入的不是數(shù)字,請(qǐng)重新輸入:");
		}
	else  break;

	}

	return a;
}


int main(){
	
	 int i=0,j=0;
	 time_t t;
	 
	 //為隨機(jī)函數(shù)做準(zhǔn)備
	 srand((unsigned) time(&t));   // 以系統(tǒng)時(shí)間做種子,初始化rand()
	
	 for(i=0;i<Size;i++){
                                         
		huan[i]=(struct huan *)malloc(sizeof(struct huan));   
                                            //動(dòng)態(tài)分配存儲(chǔ)區(qū),返回一個(gè)指向struct huan的指針
	                      huan[i]->isHave=0;    //緩沖區(qū)沒有內(nèi)容
		huan[i]->jud=0;	   //緩沖區(qū)未被使用
	 }
	
	 printf("請(qǐng)輸入生產(chǎn)者的數(shù)量:");
                      /*
	 scanf("%d",&j);
	 getchar();
	*/ 
                      j=getNumber();   
                      sh=j;
	
	
	 for(i=0;i<j;i++){
	 	sheng[i]=(struct person *)malloc(sizeof(struct person ));     
                           	//動(dòng)態(tài)分配存儲(chǔ)區(qū),返回一個(gè)指向struct person的指針
	    
	    	printf("請(qǐng)輸入生產(chǎn)者的名稱:");
	    	scanf("%s",&sheng[i]->name);
 	    	getchar();	
                          	sheng[i]->end=0;    //標(biāo)志生產(chǎn)者完成任務(wù)

	 }//for完成
      
	 printf("請(qǐng)輸入消費(fèi)者的數(shù)量:");
	// scanf("%d",&j);
	// getchar();
                        j=getNumber();   
	 xiao1=j;
	
	
	 for(i=0;i<j;i++){
		xiao[i]=(struct person *)malloc(sizeof(struct person));
	    	//動(dòng)態(tài)分配存儲(chǔ)區(qū),返回一個(gè)指向struct person的指針
	    	printf("請(qǐng)輸入消費(fèi)者的名稱:");
	    	scanf("%s",&xiao[i]->name);	
                              	getchar();	 
                          	xiao[i]->end=0;     // 標(biāo)志消費(fèi)者完成任務(wù)    
                       }
      	
                       for(i=0;i<sh;i++){
                         		
	  	//動(dòng)態(tài)分配存儲(chǔ)區(qū),返回一個(gè)指向&sheng[i]->thread的指針
                        	memset(&sheng[i]->thread, 0, sizeof(sheng[i]->thread));   
         
                        	//創(chuàng)建線程(LINUX) ,(調(diào)用(void *)shengchan方法,sheng[i]是方法的參數(shù),&sheng[i]->thread為線							程地址)         
	  	if((pthread_create(&sheng[i]->thread, NULL, (void *)shengchan,sheng[i])) != 0) {    
              	  		printf("線程創(chuàng)建失敗!\n");  
             	  		getchar();
              	  		exit(0);  
              	  		return ;
		}//if完成 
                       }
          
         	 for(i=0;i<xiao1;i++){
                           	//動(dòng)態(tài)分配存儲(chǔ)區(qū),返回一個(gè)指向&sheng[i]->thread的指針
 	 	//memset(&sheng[i]->thread, 0, sizeof(sheng[i]->thread));   
         
	 	//動(dòng)態(tài)分配存儲(chǔ)區(qū),返回一個(gè)指向&xiao[i]->thread的指針
  	 	memset(&xiao[i]->thread, 0, sizeof(xiao[i]->thread));   
         
		//創(chuàng)建線程(LINUX) ,(調(diào)用(void *)xiaofei方法,xiao[i]是方法的參數(shù),&xiao[i]->thread為線程地址)         
 	 	if((pthread_create(&xiao[i]->thread, NULL, (void *)xiaofei,xiao[i])) != 0) {    
              			printf("線程創(chuàng)建失敗!\n");  
              			getchar();
              			exit(0);  
              			return ;
		}
         	 }
            
   	 while(1){
                		sleep(18);
             		for(i=0;i<sh;i++)             //如果生產(chǎn)者執(zhí)行完,下一個(gè)繼續(xù)生產(chǎn)
                    		if(sheng[i]->end==0){   
                             
                             		continue;
                                		 }
                		for(i=0;i<xiao1;i++)          //如果消費(fèi)者執(zhí)行完,下一個(gè)繼續(xù)消費(fèi)
                    		if(xiao[i]->end==0){
                                                    continue;
                                	 }
                       
               		printf("\n演示完畢\n");
               		return;      
             	 }
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品aⅴ在线视频| 国产精品一色哟哟哟| 紧缚捆绑精品一区二区| 国产成人自拍在线| 欧美视频中文字幕| 久久男人中文字幕资源站| 一色屋精品亚洲香蕉网站| 视频在线观看91| 国产成人aaaa| 欧美日韩精品免费观看视频| 精品国产乱子伦一区| 中文字幕亚洲不卡| 免费高清在线一区| av一区二区三区四区| 欧美日韩精品系列| 中文字幕av免费专区久久| 午夜精品福利一区二区三区蜜桃| 国产成人在线视频网站| 在线亚洲高清视频| 国产网站一区二区| 天天色天天爱天天射综合| 粉嫩一区二区三区在线看 | 亚洲五码中文字幕| 国产福利一区二区三区视频在线 | 日韩av午夜在线观看| 成人的网站免费观看| 欧美日韩中文另类| 亚洲大片免费看| 亚洲国产一区二区视频| 亚洲444eee在线观看| 国产乱码精品一品二品| 欧美日韩一区二区在线视频| 国产精品狼人久久影院观看方式| 日韩成人伦理电影在线观看| 色综合久久久久网| 国产日韩精品一区二区三区| 欧美三级电影在线观看| 国产精品亲子伦对白| 精品中文字幕一区二区小辣椒| 在线观看日韩一区| 国产精品日产欧美久久久久| 青青草97国产精品免费观看无弹窗版| 色综合久久88色综合天天| 国产日本欧洲亚洲| 韩国一区二区在线观看| 欧美日韩成人在线一区| 亚洲精品美国一| 成人中文字幕在线| 精品99999| 日韩和欧美的一区| 欧美三级韩国三级日本三斤| 亚洲人成小说网站色在线| 成人综合日日夜夜| 国产亚洲一区二区三区在线观看| av在线一区二区| 国产成人综合网| 一本久久a久久免费精品不卡| 国产欧美视频一区二区三区| 国产综合久久久久影院| 欧美tickling挠脚心丨vk| 亚洲电影中文字幕在线观看| 欧美亚男人的天堂| 亚洲欧美激情小说另类| 99riav久久精品riav| 亚洲日穴在线视频| 91在线播放网址| 亚洲天堂av老司机| 91女人视频在线观看| 亚洲丝袜精品丝袜在线| 风间由美一区二区av101| 久久精品视频一区二区| 国产成人啪免费观看软件| 久久综合久久99| 国产美女视频91| 国产无遮挡一区二区三区毛片日本| 国产乱国产乱300精品| 国产亚洲成av人在线观看导航| 国产一区二区女| 久久久九九九九| 丁香网亚洲国际| 亚洲色图在线视频| 色婷婷精品久久二区二区蜜臀av| 亚洲精品v日韩精品| 欧美日韩亚洲综合| 免费人成网站在线观看欧美高清| 蜜臀久久久99精品久久久久久| 欧美激情自拍偷拍| 亚洲天堂av一区| 久久国产视频网| 精品卡一卡二卡三卡四在线| 久久精品久久精品| 久久精品亚洲麻豆av一区二区 | 欧美日本在线观看| 日本欧美加勒比视频| 2017欧美狠狠色| 成人一区二区视频| 尤物av一区二区| 91精品国产91久久综合桃花| 国产一区二区在线电影| 成人免费在线观看入口| 欧美日韩国产精品自在自线| 青娱乐精品视频| 国产欧美综合在线| 色噜噜偷拍精品综合在线| 91精品福利在线| 久久精品国产一区二区| 中文字幕不卡在线观看| 欧美性三三影院| 精品伊人久久久久7777人| 欧美国产欧美综合| 色噜噜狠狠色综合中国| 另类欧美日韩国产在线| 国产精品国产自产拍在线| 欧美男男青年gay1069videost| 国产做a爰片久久毛片| 亚洲图片欧美激情| 欧美一区二区成人| 成人av资源下载| 日韩不卡一区二区三区 | 一本大道久久精品懂色aⅴ| 日日摸夜夜添夜夜添精品视频| 国产日韩亚洲欧美综合| 欧美三级一区二区| 国产大陆a不卡| 亚洲v中文字幕| 国产视频一区在线观看| 欧美理论片在线| 国产69精品久久久久毛片| 午夜久久久影院| 中文字幕五月欧美| 日韩亚洲欧美成人一区| 91丨九色丨蝌蚪富婆spa| 精品亚洲aⅴ乱码一区二区三区| 自拍偷在线精品自拍偷无码专区| 欧美一区二区三区在线| 91免费在线看| 国产乱子轮精品视频| 午夜视黄欧洲亚洲| 国产精品欧美久久久久一区二区| 日韩欧美另类在线| 夜夜精品视频一区二区| 久久精品视频一区| 制服.丝袜.亚洲.另类.中文| 97久久超碰国产精品| 国产一区二区女| 蜜桃久久久久久久| 香蕉av福利精品导航| 最近日韩中文字幕| 久久精品人人做人人爽人人| 日韩一级免费观看| 欧美性猛交一区二区三区精品| 成人精品免费视频| 国产精品18久久久久久vr| 美女一区二区在线观看| 午夜激情综合网| 一区二区久久久| 中文字幕中文乱码欧美一区二区| 精品国精品国产尤物美女| 欧美一区午夜视频在线观看| 欧美吻胸吃奶大尺度电影| 91丨九色丨尤物| 99天天综合性| 成人一道本在线| 国产精品影视天天线| 美女视频一区在线观看| 丝袜美腿高跟呻吟高潮一区| 一区二区成人在线视频| 1024国产精品| 18欧美乱大交hd1984| 国产精品久久久爽爽爽麻豆色哟哟 | 精品999在线播放| 日韩视频一区二区在线观看| 91精品国产色综合久久久蜜香臀| 91黄色免费观看| 91久久免费观看| 欧美性猛片aaaaaaa做受| 欧美亚洲综合网| 欧美色偷偷大香| 欧美日韩一二区| 在线播放91灌醉迷j高跟美女| 欧美日韩在线亚洲一区蜜芽| 欧美日韩在线不卡| 欧美精品丝袜中出| 日韩一区二区三区在线视频| 日韩美女视频一区二区在线观看| 91精品国产综合久久精品图片| 7777精品伊人久久久大香线蕉的 | 日韩激情视频网站| 免费成人av在线播放| 日韩一级免费一区| 日韩一区二区电影在线| 26uuu亚洲婷婷狠狠天堂| 久久久91精品国产一区二区三区| 久久精品一区蜜桃臀影院| 中文字幕第一区第二区| 亚洲日韩欧美一区二区在线| 亚洲午夜久久久久久久久电影院| 午夜精品一区在线观看| 麻豆精品精品国产自在97香蕉| 紧缚奴在线一区二区三区|