这里不具体写,只写出思路,代码过于简单,请思考其中的过程即可
生产者
while(1)
{
//使用共同的变量 使用互斥锁 首先获取锁
pthread_mutex_lock(&mutex);
//如果缓冲区满 使用条件变量暂停当前线程
if(count == BUFFER_SIZE)
{
//暂停线程
pthread_cond_wait(&cond, &mutex);
}
//缓冲区没有满
buffer[count++] = item++;
printf("发送了%d\n", buffer[count -1]);
//唤醒消费者
pthread_cond_signal(&cond);
//最后释放锁
pthread_mutex_unlock(&mutex);
}
消费者
while(1)
{
//使用共同的变量 使用互斥锁 首先获取锁
pthread_mutex_lock(&mutex);
//如果缓冲区空 使用条件变量暂停当前线程
if(count == 0)
{
//暂停线程,没有可读消息
pthread_cond_wait(&cond, &mutex);
}
printf("收到了%d\n", buffer[--count]);
//通知生产者可以继续写
pthread_cond_signal(&cond);
//最后释放锁
pthread_mutex_unlock(&mutex);
}