Qt基於QSemaphore的生產者消費者模型
#include <QCoreApplication>
#include <QThread>
#include <QSemaphore>
#include <QDebug>
int dataSize=80;
int bufferSize=40;
QSemaphore usedSemaphore(0);
QSemaphore freeSemaphore(bufferSize);
int arr[40];
class Producer:public QThread{
protected:
void run(){
for(int i=0;i<dataSize;i++){
freeSemaphore.acquire();
arr[i%bufferSize]=i;
usedSemaphore.release();
}
}
};
class Consumer:public QThread{
protected:
void run(){
for(int i=0;i<dataSize;i++){
usedSemaphore.acquire();
qDebug()<<arr[i%bufferSize];
freeSemaphore.release();
}
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Producer thread1;
Consumer thread2;
thread2.start();
thread1.start();
thread1.wait();
thread2.wait();
return a.exec();
}
相關文章
- 生產者消費者模型模型
- 新手練習-消費者生產者模型模型
- 生產者消費者
- 生產者消費者模式,以及基於BlockingQueue的快速實現模式BloC
- 使用Disruptor實現生產者和消費者模型模型
- 鎖,threading local,以及生產者和消費者模型thread模型
- 生產者消費者模式模式
- python 生產者消費者模式Python模式
- 生產消費者模式模式
- C++ condition_variable 實現生產者消費者模型C++模型
- 九、生產者與消費者模式模式
- 生產者與消費者問題
- ActiveMQ 生產者和消費者demoMQ
- 記錄一次日常開發中基於阻塞佇列的生產者和消費者模型佇列模型
- python多執行緒+生產者和消費者模型+queue使用Python執行緒模型
- python 多執行緒實現生產者與消費者模型Python執行緒模型
- 生產者與消費者之Android audioAndroid
- linux 生產者與消費者問題Linux
- Java實現生產者和消費者Java
- java編寫生產者/消費者模式的程式。Java模式
- Java 多執行緒基礎(十二)生產者與消費者Java執行緒
- 阻塞佇列和生產者-消費者模式佇列模式
- java實現生產者消費者問題Java
- 讀者寫者與生產者消費者應用場景
- python中多程式消費者生產者問題Python
- 使用BlockQueue實現生產者和消費者模式BloC模式
- Java多執行緒——生產者消費者示例Java執行緒
- 併發設計模式---生產者/消費者模式設計模式
- java多執行緒:執行緒間通訊——生產者消費者模型Java執行緒模型
- 多生產者-消費者中假死現象的處理
- 插曲:Kafka的生產者案例和消費者原理解析Kafka
- 分享一個生產者-消費者的真實場景
- 2.Python程式間的通訊之佇列(Queue)和生產者消費者模型Python佇列模型
- PHP操作Beanstalkd佇列(2)生產者與消費者PHPBean佇列
- golang 併發程式設計之生產者消費者Golang程式設計
- 「Kafka應用」PHP實現生產者與消費者KafkaPHP
- 食堂中的生產-消費模型模型
- Java多執行緒——消費者與生產者的關係Java執行緒