网站建设微信端如何把网站做的和别人一样吗
web/
2025/9/26 23:43:48/
文章来源:
网站建设微信端,如何把网站做的和别人一样吗,最新注册网址查询,电商网站页面布局QEventLoop和QtConcurrent可以结合使用达到主线程ui不阻塞同步执行的效果#xff0c;但是要小心避坑#xff0c;查看如下代码#xff1a;
QEventLoop loop;
QtConcurrent::run([]()
{doSomething();loop.quit();
});
loop.exec();上述写法存在两个问题#xff1a;
Q…QEventLoop和QtConcurrent可以结合使用达到主线程ui不阻塞同步执行的效果但是要小心避坑查看如下代码
QEventLoop loop;
QtConcurrent::run([]()
{doSomething();loop.quit();
});
loop.exec();上述写法存在两个问题
QtConcurrent::run()执行后线程立即开始执行当doSomething()很快时loop.quit()的执行时间可能早于loop.exec()这样事件循环就再也不会退出了当doSomething因为某些原因crash时如果没有导致程序崩溃loop.quit无法被执行事件循环同样无法退出。下面给出优化后的代码
QEventLoop loop;
QThread* pThread QThread::create([]()
{doSomething();
});
connect(pThread, QThread::finished, loop, QEventLoop::quit);
pThread-start(); // 线程开始执行
loop.exec();这里注意两个点
connect必须在start之前这样即使线程执行很快我们也能保证信号和槽已经被connect连接槽函数会被执行connect默认第五个参数时Qt::AutoConnection在信号发出时由于信号发送线程和loop不在一个线程类型被推断为Qt::QueuedConnection所以finished信号生成的事件会放到事件队列中在loop.exec()的循环中被处理因此loop.exec一定会退出
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82441.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!