pmf*_*pmf 2 concurrency qt worker qml
使用 QML 时WorkerScript,请求(通过 发送postMessage())是否排队(并在单个处理程序线程上执行),或者是否有可能/危险postMessage()在两个线程上同时执行两个连续的线程?
所有的WorkerScript都应该在同一个线程中执行。
所有WorkerScript在 aQQmlEngine应该在同一个线程中执行。
当您WorkerScript在 QML 中创建 a 时,您将实例化QQuickWorkerScriptC++ 类。这个类使用QQuickWorkerScriptEngine该类来处理所有线程的事情。
现在,如果您查看QQuickWorkerScript::engine()并且QQmlEnginePrivate::getWorkerScriptEngine()您将看到所有WorkerScript对象都将共享相同的QQuickWorkerScriptEngine实例,只要它们共享相同的QQmlEngine.
也是QQuickWorkerScriptEngine一个QThread(公共继承)并包含一个名为dtype的成员变量QQuickWorkerScriptEnginePrivate *。d通过处理的线程运行QQuickWorkerScriptEngine(见d->moveToThread(this)的QQuickWorkerScriptEngine构造函数)。正是这一d点将有效地运行QQuickWorkerScriptEnginePrivate::event().
这种与Qt 文档相矛盾的是:
使用 WorkerScript 在新线程中运行操作。
这可能会让您认为每个WorkerScript都是一个新线程。
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |