输出结果(两个线程的执行顺序是无法确定的):
21:56:16: Starting D:\QT_Project\src19_4\Debug\src19_4.exe ...
"producer2:C"
"producer2:G"
"Consumer:C"
"producer2:T"
"Consumer:G"
"producer2:G"
"Consumer:T"
"producer2:A"
"Consumer:G"
"producer2:T"
"Consumer:A"
"producer2:A"
"Consumer:T"
"producer2:A"
QT生成随机数:
/*
* 1:前言
QT生成随机数和C语言差距不大,C语言用srand()和rand(),QT是用Qsrand()和qrand();
生成随机数主要用到了函数qsrand和qrand,这两个函数在#include 中,qsrand用来设置一个种子,
该种子为qrand生成随机数的起始值。比如说qsrand(10),设置10为种子,
那么qrand生成的随机数就在[10,32767]之间。而如果在qrand()前没有调用过qsrand(),
那么qrand()就会自动调用qsrand(1),即系统默认将1作为随机数的起始值。使用相同的种子生成的随机数一样。
2:生成随机数
设置种子:qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime())); 这里没有用固定值来作为种子,是希望函数在每次调用(间隔大于1秒)时生成的随机数不一样
*
*/
#include
#include
#include
#include
const int DataSize=10;
const int BufferSize =5;
char buffer[BufferSize];
QSemaphore freeBytes(BufferSize); //同步线程,信号量,生产者
QSemaphore usedBytes;//消费者
class Producer2:public QThread
{
public:
void run();
};
void Producer2::run()
{
/*
* 1:前言
QT生成随机数和C语言差距不大,C语言用srand()和rand(),QT是用Qsrand()和qrand();
生成随机数主要用到了函数qsrand和qrand,这两个函数在#include 中,qsrand用来设置一个种子,
该种子为qrand生成随机数的起始值。比如说qsrand(10),设置10为种子,
那么qrand生成的随机数就在[10,32767]之间。而如果在qrand()前没有调用过qsrand(),
那么qrand()就会自动调用qsrand(1),即系统默认将1作为随机数的起始值。使用相同的种子生成的随机数一样。
2:生成随机数
设置种子:qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime())); 这里没有用固定值来作为种子,是希望函数在每次调用(间隔大于1秒)时生成的随机数不一样
*
*/
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));//这里没有用固定值来作为种子,是希望函数在每次调用(间隔大于1秒)时生成的随机数不一样
for(int i=0;i
关注
打赏