?? 代碼.txt
字號:
#include "semaphore.h"
#include "pthread.h"
#include "stdio.h"
#include "sys/time.h"
#include "stdlib.h"
#define readernumber 10;
#define writernumber 3;
pthread_mut_t mut;
sem_t full[20];
int readcount;
int buf[20];
int i,b,m;
int t[20];
int number;
void *Reader(void *param)
{
int p;
int du;
p = *(int *)param;
tail = rand()%20;
readcount = readcount + 1;
sem_wait(&full[du]);
pthread_mut_lock(&mut);
printf("the reader %d is reading the buffer[%d]\n",p,du);
printf("%d has been readed\n",buffer[du]);
pthread_mut_unlock(&mut);
readcount = readcount - 1;
sleep(3);
}
void *Writer( void *p)
{
int w_number;
int h;
while(1)
{
pthread_mut_lock(&mut);
b = 1;
if(number==20)
break;
head = rand()%20;
if(t[head] == 0)
{
w_number = *(int *)p;
number++;
buf[h] = rand();
t[h] = 1;
sem_post(&full[head]);
printf("the writer %d has writed the number %d into the buffer[%d]\nThe content of the buffer:\n",w_number,h+1,h);
for(i = 0;i<20;i++)
printf("%d ",buffer[i]);
printf("\n");
}
pthread_mut_unlock(&mut);
sleep(2);
}
}
main()
{
int temp;
int i,j;
int wno,rno;
pthread_t t[15];
pthread_mut_init(&mut,NULL);
srand((unsigned int)time(NULL));
number = 0;
j = 0;
for(i = 0;i<10;i++)
{ t[i] = 0;
buffer[i] = 0;
sem_init(&full[i],0,0);
}
for(i = 0;i<10;i++)
{ if(i<3)
{
temp = pthread_create(&t[j],NULL,Writer,(void *)&i);
if(0!=temp)
{
printf("create error!\n");
}
j = j + 1;
}
else
{
temp = pthread_create(&t[i],NULL,Reader,(void *)&i);
}
}
for(i = 0;i<13;i++)
{
pthread_join(t[i],NULL);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -