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

Ujig 2020-08-20 05:22:16
生产者消费者模式中,为什么非要使用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。
...全文
69 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
smwhotjay 2020-08-20
学习【线程同步】
  • 打赏
  • 举报
回复
发帖
其它技术问题

3862

社区成员

C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
帖子事件
创建了帖子
2020-08-20 05:22
社区公告
暂无公告