您当前的位置: 首页 >  qt

txwtech

暂无认证

  • 1浏览

    0关注

    813博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

QT同步线程信号量semaphores使用方法

txwtech 发布时间:2022-08-17 22:03:14 ,浏览量:1

输出结果(两个线程的执行顺序是无法确定的):

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            
关注
打赏
1665060526
查看更多评论
0.0398s