当使用QML WorkerScript
时,请求(通过postMessage()
发送)排队(并在单个处理程序线程上执行),还是存在两个连续postMessage()
的可能性/危险性将同时在两个线程上执行?
答案 0 :(得分:4)
所有WorkerScript
应该在同一个帖子中执行。
WorkerScript
中的所有QQmlEngine
都应在同一个帖子中执行。
在QML中创建WorkerScript
时,实例化QQuickWorkerScript
C ++类。这个类使用QQuickWorkerScriptEngine
类来处理所有的事情。
现在,如果您查看QQuickWorkerScript::engine()
和QQmlEnginePrivate::getWorkerScriptEngine()
,您会看到所有WorkerScript
个对象将共享相同的QQuickWorkerScriptEngine
个实例,只要它们共享相同的QQmlEngine
实例QQuickWorkerScriptEnginePrivate::event()
1}}。
QQuickWorkerScriptEngine
也是QThread
(公共继承),包含d
类型QQuickWorkerScriptEnginePrivate *
的成员变量。 d
正在QQuickWorkerScriptEngine
处理的主题中运行d->moveToThread(this)
(请参阅QQuickWorkerScriptEngine
构造函数中的d
)。正是这个WorkerScript
将有效地运行Qt documentation中的异步工作。
这种矛盾Code Signing certificate表明:
使用WorkerScript在新线程中运行操作。
这可能会让您认为每个static_cast
都是新主题。