qt中QWaitCondition消费者与生产者示例

本文通过QWaitCondition在QT中展示了典型的生产者消费者问题的解决方案,详细介绍了全局变量定义、生产者线程、消费者线程的实现,并提供了主函数调用流程及运行结果。附带源码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、全局变量定义
extern const int DataSize;///>生成的数据量
extern const int BufferSize ;///>BufferSize 是循环缓冲区的大小,小于 DataSize,这意味着在某一时刻生产者将达到缓冲区的末尾,并从开始位置重新启动。
extern char buffer[80];///>共享缓冲区

extern QWaitCondition bufferNotEmpty;///>缓冲区不是空,此时消费者可以读取数据
extern QWaitCondition bufferNotFull;///>缓冲区未满,生产者可以生产数据
extern QMutex mutex;
extern int numUsedBytes ;///>缓冲区中所包含数据的字节数
2、生产者端
    qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));

    for (int i = 0; i < DataSize; ++i) {
        mutex.lock();
        //检测缓冲区是否已满,如果缓冲区已经满了,线程就会在 bufferNotFull 条件上等待
        if (numUsedBytes == BufferSize)
            bufferNotFull.wait(&mutex);
        mutex.unlock();


        //如果缓冲区没有满,那么就生产数据
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-西门吹雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值