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

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。
...全文
101 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
smwhotjay 2020-08-20
  • 打赏
  • 举报
回复
学习【线程同步】

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧