社区
Qt
帖子详情
将派生自QObject的类worker调用moveToThread,使它在新线程里执行后,如何对worker的变量、成员加锁呢?
左眼看到鬼
2015-10-11 07:32:40
将派生自QObject的类worker调用moveToThread,使它在新线程里执行后,如何对worker的变量、成员加锁呢?
如果这样不可行,那有什么可行的办法吗
...全文
139
1
打赏
收藏
将派生自QObject的类worker调用moveToThread,使它在新线程里执行后,如何对worker的变量、成员加锁呢?
将派生自QObject的类worker调用moveToThread,使它在新线程里执行后,如何对worker的变量、成员加锁呢? 如果这样不可行,那有什么可行的办法吗
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ibm123
2015-10-12
打赏
举报
回复
使用多线程的锁,如: QReadWriteLock等
moveto
thread
1,因为Q
Thread
的对象依附在主
线程
中,所以他的slot函数会在主
线程
中
执行
,而不是次
线程
。 除非: Q
Thread
对象依附到次
线程
中(通过moveto
Thread
)slot 和信号是直接连接,且信号在次
线程
中发射 但上两种解决方法都不好,因为Q
Thread
不是这么用的(Bradley T. Hughes) 主
线程
(信号)Q
Thread
(槽) 这是Qt Manual
Qt创建多
线程
的两种方法
在UI
线程
下
调用
Q
Thread
的非run函数(其实也不应该直接
调用
run函数,而应该使用start函数),和
执行
普通函数无区别,这时,如果这个函数要对Q
Thread
的某个
变量
进行变更,而这个
变量
在run函数
里
也会被用到,这时就需要注意
加锁
的问题,因为可能这个
变量
前几毫秒刚刚在run中
调用
,再
调用
时已经被另外的
线程
修改了。Q
Object
是一个功能异常强大的
类
,它提供了Qt关键技术信号和槽的支持以及事件系统的支持,同时它提供了
线程
操作的接口,也就是Q
Object
是可以选择不同的
线程
里
执行
的。
关于moveto
Thread
目前
线程
使用常用 #include "widget.h" #include "ui_widget.h" #include <Q
Thread
> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); edit = new QTextEdit(this); edit->resize(200,300);
thread
=
Q
Thread
使用——关于run和moveto
Thread
的区别
Q
Thread
使用探讨 2010-10-23 00:30 注意:本文停止更
新
,请优先考虑 Qt
线程
基础(Q
Thread
、QtConcurrent等) dbzhang800 2011.06.18 Q
Thread
似乎是很难的一个东西,特别是信号和槽,有非常多的人(尽管使用者本人往往不知道)在用不恰当(甚至错误)的方式在使用 Q
Thread
,随便
Qt中
线程
使用汇总
Q
Thread
类
提供一种独立于平台的
线程
管理方式。 方法1 一个Q
Thread
实例管理程序中的一个
线程
。Q
Thread
的
执行
开始于run()。默认情况下,run()通过
调用
exec()启动事件循环,并在
线程
内运行Qt事件循环。 你可以使用Q
Object
::moveTo
Thread
()将工作对象移动到
线程
中使用。 示例: class
Worker
: public Q
Object
{ Q_
OBJECT
public slots: void doWork(const ...
Qt
16,154
社区成员
26,585
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章