我正在为我的操作系统考试做一个项目。图片是我有一个过程分为:
我在伪代码中的初始设计是这样的(如果你需要真正的代码我可以使用Makefile和所有标题制作.tar。)。
生产者
while(1) {
pushTasks(); /* push messages in the queue */
waitCollector(); /* wait on a CV the signal of the collector */
broadcastToWorkers(); /* tells to all workers to start a new elaboration */
}
所有消费者都
while(1)
{
while(1)
{
popTask();
doTask();
if(message of end of stream) break;
}
signalToCollector(); /* increment a count and signal on a CV */
waitProducer(); /* wait signal from producer to restart the elaboration */
}
收藏家,它必须同步时间(想象所有任务完成后每个时间单位都会发生)
while(1) {
doStuff();
waitWorkers(); /* each worker increments a count when it's done... */
signalToProducer(); /* tells the producer to generate new tasks*/
}
pthread_cond_signal
或pthread_cond_wait
的条件是什么?