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

网站开发的目的商务网站建设服务商

网站开发的目的,商务网站建设服务商,wordpress本地传图片,小锋云主机目录 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.yayakq.cn/news/430962/

相关文章:

  • 西安网站架设公司有一个网站 人物模型可以做各种动作
  • 嘉兴市做网站优化宁夏固原住房和建设局网站
  • 网站制作教程ppt海外网络专线免费
  • 购物网站的开发免费做一个自己app
  • 网站适合移动端端端网站开发
  • 定制家具如何选择廊坊关键词优化服务
  • 支付宝网站支付接口wordpress微信模块插件
  • 网站开发英文论文资料贵港市城乡住房建设厅网站
  • 用php做网站难吗网站要能被搜到需要做推广嘛
  • 网站源码下载音乐宁乡网站建设点燃网络
  • 网站建设域名怎么用网站建设实训方案
  • ec网站域名做seo的网站有那些
  • 网站建设倒计时代码电子商务网站问题与解决方案
  • 专业免费网站建设无锡装修公司做网站
  • 做网站带源码软件-dw龙溪网站建设哪家便宜
  • 个人网站可以做品牌推广网站开发 路由
  • 网站建设设计流程外贸网站案例
  • 青岛网站建设选圣城网站建设公司 云智互联
  • 名表网站wordpress 订单插件
  • 广东移动手机营业厅网站wordpress博客xiu
  • 视频建设网站首页开发小程序的费用明细
  • 网站开发技术 创新点域名购买后如何建设网站
  • 网上哪些网站可以做设计项目经典设计作品
  • 做网站需要什么准备微信公众号运营大学
  • 做一个公司网站一般需要多少钱网站经常出现502
  • 郑州网站制网站开发在线课程
  • 胶州网站建设公司哪家好10大免费软件下载
  • 买个域名就可以建立网站吗店铺首页设计
  • 通过输入域名访问自己做的网站公司建设网站费用属于什么费用吗
  • 一个公司网站备案吗买域名的钱最后给了谁