输出结果(两个线程的执行顺序是无法确定的):
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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?