Wait Condition 例子

翻译自Qt帮助文档:Wait Condition Example

用Qt证明多线程编程。

Wait Condition 例子展示了如何使用 QWaitCondition 和 QMutex 来控制对一个循环缓冲区的访问,生产者线程和消费者线程共享该循环缓冲区。

生产者线程往缓冲区写数据,直到缓冲区的尾部,然后从缓冲区开头重新开始重写已经存在的数据。当数据被生产出来后消费者线程读取数据并写道标准错误中。

Wait Conditions 使高级并发成为可能,比单独使用mutexes的可能性大。如果想访问QMutex控制的缓冲区,消费者线程和生产者线程不能同时访问缓冲区。然而,让两个线程同时访问缓冲区的不同部分是没有什么害处的。

这个例子包括两个类:生产者(Producer)和 消费者(Consumer)。它们都继承了QThread。这两个类通过循环缓冲区交互,保护缓冲区的同步工具设为全局变量。

使用 QWaitCondition 和 QMutex 可以解决生产者-消费者的问题,另一种替代的解决方法就是使用QSemaphore。


全局变量

让我们从循环缓冲区和相关的同步工具开始吧:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值