/*
- 编写一个程序,实现一个线程从共享的缓冲区中读数据,另一个线程向共享的缓冲区中写数据
- 对共享的缓冲区的访问控制是通过使用一个互斥锁来实现的。 */
#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h>
#define FALSE 0 #define TRUE 1 void readfun(); void writefun();
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); } }
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); } }