1005實現一個線程從共享的緩衝區中讀數據,另外一個線程向共享的緩衝區中寫數據

/*ide

  • 編寫一個程序,實現一個線程從共享的緩衝區中讀數據,另外一個線程向共享的緩衝區中寫數據
  • 對共享的緩衝區的訪問控制是經過使用一個互斥鎖來實現的。
    */

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>線程

#define FALSE 0
#define TRUE 1
void readfun();
void writefun();it

char buffer[256];
int buffer_has_item=0;
int retflag=FALSE;
pthread_mutex_t mutex;
int main(int argc, char argv[])
{
pthread_t reader;
pthread_mutex_init(&mutex,NULL);
pthread_create(&reader,NULL,(void
)&readfun,NULL);
writefun();
}
void readfun()
{
while(1)
{
if(retflag)
return;
pthread_mutex_lock(&mutex);
if(buffer_has_item==1)
{
printf("%s",buffer);
buffer_has_item=0;
}
pthread_mutex_unlock(&mutex);
}
}io

void writefun()
{
int i=0;
while(1)
{
if(i==10)
{
retflag=TRUE;
return;
}
pthread_mutex_lock(&mutex);
if(buffer_has_item==0)
{
sprintf(buffer,"This is %d\n",i++) ;
buffer_has_item=1;
}
pthread_mutex_unlock(&mutex);
}
}class

相關文章
相關標籤/搜索