Multithreading 正在从QML访问C++;在主线程安全模式下运行的对象?

Multithreading 正在从QML访问C++;在主线程安全模式下运行的对象?,multithreading,qt,qml,qtquick2,Multithreading,Qt,Qml,Qtquick2,我注意到主线程id等于qml线程id。我可以访问controller对象的Q_属性并从主线程(创建它的地方)和QML线程(与我看到的相同)同时使用它,这是否正确?如果我将controller对象移动到另一个线程,将其设置为上下文属性,则会出现争用条件,这是否正确?我能做一些同步吗?还是完全不正确,我应该只从属于主线程的对象创建上下文属性(或者甚至只调用代码> qMLReavestType < /Cord>,并且只创建在QML本身中用C++编写的对象)来防止种族?什么是代码>控制器< /代码>?它

我注意到主线程id等于qml线程id。我可以访问
controller
对象的
Q_属性
并从主线程(创建它的地方)和QML线程(与我看到的相同)同时使用它,这是否正确?如果我将
controller
对象移动到另一个线程,将其设置为上下文属性,则会出现争用条件,这是否正确?我能做一些同步吗?还是完全不正确,我应该只从属于主线程的对象创建上下文属性(或者甚至只调用代码> qMLReavestType < /Cord>,并且只创建在QML本身中用C++编写的对象)来防止种族?

什么是代码>控制器< /代码>?它是安全的,危险的。因为你的
控制器
(我对它一无所知)可以很容易地冻结UI。你能提供一个示例代码来解释你想要实现的目标吗。Downvoted。您应该提供更明确的操作上下文。像这样只是闲聊。不能使用QML
moveToThread
,但可以创建
QRunnable
QThread
并将它们注册为上下文属性。然后可以使用
连接
绑定到它们并接收结果。使用信号总是比较容易。关于
QPROPERTY
的访问器,这实际上取决于上下文,但可能需要线程安全性。编辑问题并提供清晰的背景和设置,以便人们可以为您的问题提供最佳解决方案。