qt sleep函数哪个头文件

qt sleep函数哪个头文件,第1张

QT虽然没有提供Sleep(),但是QT提供了系统调用,然而每个系统中都有Sleep()函数,所以可以简单的包含系统头文件即可。如果是windows平台则:#include <windows.h> 就可以用Sleep()了:Sleep(10000)(注意是大写S)linux下头文件是:#include <sys/stat.h>

QT线程是独立的类:

在QT中添加C++类,头文件引用#include <QThread>类公开,这样写:

class XXXX:public QThread,类里面申明Q_OBJECT,直接写在里面。signals: XXX()这是你的订阅事件名。private:void run()这是run函数;public: int cona=3这是变量,一定要public。

cpp文件里引用头文件,run函数里面写方法:

void XXXX::run()

{

do

{

msleep(cona)

emit connec()

}while(true)

}

上面就是线程类了。现在我们在窗体中应用,先在头文件申明

头文件private: XXXX *thread1XXXX *thread2

构造函数中初始化他们

thread1=new XXXX()

thread1->cona=3

QObject::connect(thread1,SIGNAL(connec()),this,SLOT(XXX信号1()))

thread2=new XXXX()

thread2->cona=4

QObject::connect(thread2,SIGNAL(connec()),this,SLOT(XXX信号2()))

XXX信号1()是读A数据,XXX信号2()读B数据。

按钮1的信号槽里写方法同时进行每3秒读A、没4秒读B

thread1->start()

thread2->start()

要结束谁就用 xxxx->terminate()

看明白没?QT可不同与C++,你不熟悉编程环境,是很难理解的。

1.

udelay()mdelay()ndelay()实现的原理本质上都是忙等待,ndelay和mdelay都是通过udelay衍生出来的,我们使用这些函数的实现往往会碰到编译器的警告implicit declaration of function'udelay',这往往是由于头文件的使用不当造成的。在include/asm-???/delay.h中定义了udelay(),而在include/linux/delay.h中定义了mdelay和ndelay.

udelay一般适用于一个比较小的delay,如果你填的数大于2000,系统会认为你这个是一个错误的delay函数,因此如果需要2ms以上的delay需要使用mdelay函数。

2.由于这些delay函数本质上都是忙等待,对于长时间的忙等待意味这无谓的耗费着cpu的资源,因此对于毫秒级的延时,内核提供了msleep,ssleep等函数,这些函数将使得调用它的进程睡眠参数指定的时间。

应用层:

#include <unistd.h>

1、unsigned int sleep(unsigned int seconds)秒级

2、int usleep(useconds_t usec) 微秒级:1/10^-6

#define _POSIX_C_SOURCE 199309

#include <time.h>

3、int nanosleep(const struct timespec *req, struct timespec *rem)

struct timespec {

time_t tv_sec /* seconds */

long tv_nsec /* nanoseconds */

}

// The value of the nanoseconds field must be in the range 0 to 999999999.

内核层:

include <linux/delay.h>

1、void ndelay(unsigned long nsecs)纳秒级:1/10^-10

2、void udelay(unsigned long usecs)微秒级: 1/10^-6

3、void mdelay(unsigned long msecs)毫秒级:1/10^-3

sleep_on(), interruptible_sleep_on()

sleep_on_timeout(), interruptible_sleep_on_timeout()

根据你的情况选用这些函数,注意: sleep *** 作在kernel必须小心、小心。。。

udelay()等函数是cpu忙等,没有传统意义上的sleep。这些函数相当于我们平时的阻塞读、写之类的语义,主要用于等外设完成某些 *** 作


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/6061722.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-13
下一篇2023-03-13

发表评论

登录后才能评论

评论列表(0条)

    保存