#include <QtCore>
#include <stdio.h>
#include <stdlib.h>
#include <QDebug>
const int DataSize = 10;
const int BufferSize =5;
char buffer[BufferSize];
QSemaphore freeBytes(BufferSize);
QSemaphore usedBytes;
class Producer:public QThread
{
public:
void run()
{
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
for(int i =0;i<DataSize;i++)
{
sleep(5);
freeBytes.acquire();
buffer[i%BufferSize] = "ACGT"[(int)qrand()%4];
qDebug()<<QString("producer:%1").arg(buffer[i%BufferSize]);
usedBytes.release();
}
}
};
class Consumer:public QThread
{
public:
void run()
{
for(int i=0;i<DataSize;i++)
{
usedBytes.acquire();
qDebug()<<QString("Consumer:%1").arg(buffer[i%BufferSize]);
freeBytes.release();
}
}
};
int main(int argc, char* argv[])
{
QCoreApplication app(argc, argv);
Producer producer;
Consumer consumer;
producer.start();
consumer.start();
producer.wait();
consumer.wait();
return app.exec();
}
Qt QSemaphore
猜你喜欢
转载自blog.csdn.net/qq_24127015/article/details/84285412
今日推荐
周排行