生产者消费者模式中,为什么非要使用mutex,然后利用
const int BufferSize = 20;
QQueue<QVariant> queue;
QWaitCondition bufferIsNotFull;
for()
{
...
...
while(queue.size() == BufferSize)
bufferIsNotFull.wait(&mutex);
...
...
}
这种方式来实现呢?不能用空的while语句让他等待实现阻塞,满足要求就break出去吗?比如:
void QThread::run()
{
...
for()
{
...
while(1)
{
if(queue.size() < BufferSize)
break;
}
...
}
...
}
这样的话就不需要利用mutex。
mutex可以跨进程(当然更可以跨线程)同步,用别的也可以,比如event。
Qt这个模式可不只是两个个线程,而是支持n+m个线程的即:n个生成者、m个消费者