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

摄影网站知乎网站建设问卷调查表

摄影网站知乎,网站建设问卷调查表,直播app开发需求,国外酷站收录网站QEventLoop和QtConcurrent可以结合使用达到主线程ui不阻塞同步执行的效果,但是要小心避坑,查看如下代码: QEventLoop loop; QtConcurrent::run([&]() {doSomething();loop.quit(); }); loop.exec();上述写法存在两个问题: Q…

QEventLoop和QtConcurrent可以结合使用达到主线程ui不阻塞同步执行的效果,但是要小心避坑,查看如下代码:

QEventLoop loop;
QtConcurrent::run([&]()
{doSomething();loop.quit();
});
loop.exec();

上述写法存在两个问题:

  1. QtConcurrent::run()执行后线程立即开始执行,当doSomething()很快时,loop.quit()的执行时间可能早于loop.exec(),这样事件循环就再也不会退出了!
  2. 当doSomething因为某些原因crash时,如果没有导致程序崩溃,loop.quit无法被执行,事件循环同样无法退出。下面给出优化后的代码
QEventLoop loop;
QThread* pThread = QThread::create([&]()
{doSomething();
});
connect(pThread, &QThread::finished, &loop, &QEventLoop::quit);
pThread->start(); // 线程开始执行
loop.exec();

这里注意两个点:

  1. connect必须在start之前,这样即使线程执行很快,我们也能保证信号和槽已经被connect连接,槽函数会被执行
  2. connect默认第五个参数时Qt::AutoConnection,在信号发出时,由于信号发送线程和loop不在一个线程,类型被推断为Qt::QueuedConnection,所以finished信号生成的事件会放到事件队列中,在loop.exec()的循环中被处理,因此loop.exec一定会退出
http://www.yayakq.cn/news/889732/

相关文章:

  • 手机创建个人网站 免费中山网站建设价格
  • 外国网站后台设计白银市住房与建设局网站
  • 如何降低网站的权重编程软件下载手机版
  • 国内网站免费服务器做网站撘框架
  • 有了域名公司网站怎么建设购物网站做推广
  • 韩国做 mp4下载网站百度 网站 质量度
  • 网页模板网站推荐什么是网络营销中的广告联盟
  • 怎么做网站寄生虫百度地图网页版
  • 江苏网站建设教程网站音乐播放器源码
  • 安卓网站开发平台网站建设需要哪些费用
  • 多城市网站开发模板网站建设优惠
  • 万网网站备案系统360网站备案查询
  • 郑州高端网站制作广告设计在哪里学
  • 清河网站建设公司锦江区建设和交通局网站
  • 网站的访问量怎么查多用户商城网站方案
  • 汉阳放心的建站企丿百度网盘资源搜索
  • 广发证券 网站谁做的寻找南京帮助做网站的单位
  • 免费ftp网站上海外贸网站推广哪家好
  • 优质网站有哪些做网站免费服务器哪家好
  • 中信建设内部网站网站建设河南
  • 招商网站建设推广天津的设计公司
  • 查询系统网站模板wordpress如何爬虫
  • 信息发布网站开发wordpress手机端下滑刷新
  • 东莞做工业产品网站建设网站设计与建设代码
  • 行业平台网站开发英文建站多少钱
  • 广州网站建设网站开发常州做上市公司律所
  • 福清营销型网站建设方案济南免费网站建站模板
  • 做网站(信科网络)学做网站论坛好吗
  • 中英文网站系统网站客户问题解答
  • 企业标准建站ui网页设计介绍