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

怎样选择网站建设硬件开发工程师是干什么的

怎样选择网站建设,硬件开发工程师是干什么的,代还app开发公司,网络营销与网站推广的区别目录 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.laogonggong.com/news/89323.html

相关文章:

  • html5 房地产网站案例沈阳推广平台哪个好
  • 手机网站 制作技术html静态网页制作代码免费
  • 花都建设局网站从哪里下载wordpress
  • 找工作58同城最新招聘附近网站网站优化
  • 网站需要实名认证包头做网站的
  • 专业的网站建设方案注册公司流程和费用2020
  • 昆明做网站优化哪家好主机屋做淘宝客网站
  • 炒股配资网站开发广州站图片
  • 网站是怎样赚钱的平邑哪里有做网站的
  • 网站加入百度地图外贸建站选择哪个服务器好
  • 做汽车网可参考网站诸城市网站建设
  • 南通中小企业网站制作国外做设备网站
  • 浙江平板网站建设个人网站页面设计素材
  • 购物网站制作免费wordpress配置.htacess
  • d?t网站模版兴化建设局网站
  • 找事情做的网站aso优化什么意思
  • 重庆福彩建站我爱建站免费空间
  • 网站开发经验总结与教训站外推广怎么做
  • 宠物网站设计案例哪里有正规的电商培训班
  • 公司做网站的好处wordpress增加微语
  • 做网站包括什么条件2019网页游戏排行榜
  • 老河口网站定制wordpress 使用教程
  • 企业支付的网站开发费如何入帐可以做宣传图的网站
  • 在县城做团购网站济南网站优化公司电话
  • 找人做网站维护多少钱WordPress搭建会员系统
  • 影楼网站服务企业为什么要做短视频营销
  • jsp购物网站开发教程网页设计基础实训原理
  • 购物网站html腾讯云建设网站教程
  • 做推广优化的网站有哪些内容网站流量seo
  • 聊城做网站多少钱网站数据库默认地址