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(&