我正在使用某些特定条件在C中实现生产者/消费者问题:
我不知道如何仅根据上面的标准使用我应该实现的方式。
这是我仅使用3个互斥锁编写的伪代码,我无法根据条件进行操作。
任何帮助将不胜感激,我不知道如何在这里仅使用一个互斥锁,在其中放置信号灯和条件变量。
伪代码:
作家:
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();
答案 0 :(得分:0)
这里是使用1个互斥锁和两个条件变量的解决方案,它们可以支持多个生产者-消费者。伪代码在c ++中
首先阅读线程安全缓冲区队列实现here。
然后检查生产者消费者解决方案https://codeistry.wordpress.com/2018/03/09/unordered-producer-consumer/。