C 生产者/消费者:1个生产者,多个消费者-1个信号量,1个互斥,1个条件变量
我用一些特定的标准在C中实现生产者/消费者问题:C 生产者/消费者:1个生产者,多个消费者-1个信号量,1个互斥,1个条件变量,c,producer-consumer,C,Producer Consumer,我用一些特定的标准在C中实现生产者/消费者问题: 一个生产者,多个消费者 仅使用一个互斥、一个信号量和一个条件变量 所有消费者都必须消费(就像广播),然后,当生产者生产的所有产品都已经被消费者消费时,生产者将生产更多的产品 我不知道如何实现它,只使用我应该根据上述标准 这里是我只使用3个互斥体编写的伪代码,我不能根据标准来编写 任何帮助都将不胜感激,我不知道如何在这里使用一个互斥,在哪里放置信号量和条件变量 伪代码: 作者: glock(); //lock from reader write
glock(); //lock from reader
write_lock(); //wait till there is no readers
//write the data
write_unlock();
g_unlock();
g_lock(); //so reader can't read when writer locked g and writting
g_unlock();
read_lock();
reader++;
if (reader == 1)
write_lock(); ///all consumers have consume
//read the data
read_lock();
reader--;
if (reader == 0)
write_unlock();
read_lock();
阅读器:
glock(); //lock from reader
write_lock(); //wait till there is no readers
//write the data
write_unlock();
g_unlock();
g_lock(); //so reader can't read when writer locked g and writting
g_unlock();
read_lock();
reader++;
if (reader == 1)
write_lock(); ///all consumers have consume
//read the data
read_lock();
reader--;
if (reader == 0)
write_unlock();
read_lock();
这是一个使用1个互斥和两个条件变量的解决方案,可以支持多个生产者和消费者。伪代码是用c编写的++ 首先读取线程安全缓冲区队列实现 然后检查生产者-消费者解决方案