当前位置: 首页 > news >正文

网站正能量免费推广软件晚上优化营商环境发言稿

网站正能量免费推广软件晚上,优化营商环境发言稿,池州网站制作,农业生态园电商网站建设目录 QT提供延时 1.自定义延时 2.使用QElapsedTimer 3.使用事件循环 4.跨平台延时 QT提供延时 这里提供四种方法: 1、多线程程序使用QThread::sleep()或者QThread::msleep()或QThread::usleep()或QThread::wait()进行延时处理。 Sleep不会释放对象锁&#x…

目录

QT提供延时

1.自定义延时

2.使用QElapsedTimer

3.使用事件循环

4.跨平台延时


QT提供延时

这里提供四种方法:

1、多线程程序使用QThread::sleep()或者QThread::msleep()或QThread::usleep()或QThread::wait()进行延时处理。

Sleep不会释放对象锁,其他线程无法访问对象,因此会阻塞线程;而Wait会释放对象锁,使得其他线程能够访问该对象。

1.自定义延时

使用QEventLoop

void Widget::Sleep(int msec)
{QTime dieTime = QTime::currentTime().addMSecs(msec);while( QTime::currentTime() < dieTime )QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}

传入参数msec,使程序延时msec毫秒。这种方法不会阻塞当前线程,尤其适合Qt的单线程带UI程序,或者UI线程,因为线程阻塞时,

很明显的现象就是UI卡死。当然,你也可以更改addMSecs为addSecs使程序延时msec秒。

如果去掉QCoreApplication::processEvents(QEventLoop::AllEvents, 100); 可以延时,但也会阻塞线程

QCoreApplication::processEvents(QEventLoop::AllEvents, 100);

使程序在while等待期间,去处理一下本线程的事件循环,处理事件循环最多100ms必须返回本语句,如果提前处理完毕,则立即返回这条语句

2.使用QElapsedTimer

使程序延时10S(10000MS),但是这种方法也会阻塞线程

//#include <QElapsedTimer>
QElapsedTimer t;
t.start();
while(t.elapsed()<10000);

3.使用事件循环

这种方法不会阻塞线程

void Delay_MSec(unsigned int msec)
{QEventLoop loop;//定义一个新的事件循环QTimer::singleShot(msec, &loop, SLOT(quit()));//创建单次定时器,槽函数为事件循环的退出函数loop.exec();//事件循环开始执行,程序会卡在这里,直到定时时间到,本循环被退出
}

4.跨平台延时源码

QTest中的Sleep(可以看到window中调到是Sleep,其他是nanosleep)

void QTest::qSleep(int ms)
{QTEST_ASSERT(ms > 0);#ifdef Q_OS_WINSleep(uint(ms));
#elsestruct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 };nanosleep(&ts, NULL);
#endif
}


QThread中Sleep

/*  /internalhelper function to do thread sleeps, since usleep()/nanosleep()aren't reliable enough (in terms of behavior and availability)
*/
static void thread_sleep(struct timespec *ti)
{pthread_mutex_t mtx;pthread_cond_t cnd;pthread_mutex_init(&mtx, 0);pthread_cond_init(&cnd, 0);pthread_mutex_lock(&mtx);(void) pthread_cond_timedwait(&cnd, &mtx, ti);pthread_mutex_unlock(&mtx);pthread_cond_destroy(&cnd);pthread_mutex_destroy(&mtx);
}
void QThread::sleep(unsigned long secs)
{struct timeval tv;gettimeofday(&tv, 0);struct timespec ti;ti.tv_sec = tv.tv_sec + secs;ti.tv_nsec = (tv.tv_usec * 1000);thread_sleep(&ti);
}

http://www.dt0577.cn/news/44939.html

相关文章:

  • 用php做的订票网站赛事资讯赛马资料
  • 临海网站制作网络营销成功案例3篇
  • 英文网站seo方案营销策略都有哪些方面
  • 深圳做营销网站制作google seo实战教程
  • 搭建网站全套需要多少钱网络公司排名
  • wordpress关闭评论班级优化大师app
  • 电商运营网站设计广州网络营销运营
  • 美女做直播网站有哪些谷歌搜索入口手机版
  • 公司网站改版方案游戏推广员拉人技巧
  • 施工企业合规风险识别与管理seo免费外链工具
  • 做网站改版的网络品牌推广
  • 珠海网站建设联系方式seo排名优化怎样
  • 体验做愛网站东莞疫情最新消息今天
  • 数学建模代做网站软文推广文案
  • 做阿里巴巴网站可以贷款吗西安网站制作价格
  • 做网站一共需要多少钱百度指数工具
  • 仁怀网站建设网络seo培训
  • 订餐网站的数据库建设网站及搜索引擎优化建议
  • 南阳网站制作价格浏览器大全网站
  • 网站签到的作用营销方式
  • 做网站便宜权重查询
  • 网络域名备案查询站内seo和站外seo区别
  • 常州网站支付通道建设国际最新新闻
  • 优设网官方网阿里巴巴seo排名优化
  • 哪里的网站建设百度指数查询入口
  • 如何做医美机构网站观察分析模板建站
  • 织梦做中英文网站详细步骤百度信息流广告平台
  • 个人网站建设多少钱此网站不支持下载视频怎么办
  • 南京网站设计案例网络培训
  • 龙华网站建设公司站长网站seo查询