Qt之线程同步(生产者消费者模式 - QWaitCondition)

简述

生产者将数据写入缓冲区,直到它到达缓冲区的末尾,这时,它从开始位置重新启动,覆盖现有数据。消费者线程读取数据并将其写入标准错误。

Wait condition(等待条件)比单独使用 mutex(互斥量)有一个更高级的并发性,如果缓冲区的访问由一个 QMutex 把守,当生产者线程访问缓冲区时,消费者线程将无法访问。然而,两个线程同时访问不同的缓冲区是没有害处的。

示例包含两个类:Producer 和 Consumer,均继承自 QThread。循环缓冲区用于两个类之间的沟通,同步工具用于保护全局变量。

另一种“生产者 - 消费者”模式的方案是使用 QSemaphore - Qt之线程同步(生产者消费者模式 - QSemaphore)

| 版权声明:一去、二三里,未经博主允许不得转载。

全局变量

首先,一起来看循环缓冲区和相关的同步工具:

const int DataSize = 100000;

const int BufferSize = 8192;
ch

你可能感兴趣的:(Qt,中级进阶)