生产者消费者模式的不懂之处

生产者消费者模式中,为什么非要使用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个消费者