QObject的Thread Affinity翻译

来源:互联网 发布:sql select as语句 编辑:程序博客网 时间:2024/05/18 04:01

Thread Affinity

线程亲和

A QObject instance is said to have a thread affinity, or that it lives in a certain thread. When aQObject receives aqueued signal or aposted event, the slot or event handler will run in the thread that the object lives in.

QObject实例可以说是线程亲和的,它生存在某个线程中。当QObject收到一个队列信号(queue signal)或一个发布事件(posted event),槽或事件处理将在对象所生存的线程中运行。

Note:If a QObject has no thread affinity (that is, ifthread() returns zero), or if it lives in a thread that has no running event loop, then it cannot receive queued signals or posted events.

注意:如果QObject没有线程亲和(就是说,如果thread()返回0),或者如果其生存在一个没有运行事件循环的线程中,则其不能收到队列信号或发布事件。

By default, a QObject lives in the thread in which it is created. An object's thread affinity can be queried usingthread() and changed usingmoveToThread().

默认下,QObject生存在创建其的线程中。一个对象的线程亲和可以使用thread()查询,可以用moveToThread()改变。

All QObjects must live in the same thread as their parent. Consequently:

所有的QObject必须和它们的父亲生存在相同的线程。因此:

  • setParent() will fail if the two QObjects involved live in different threads.
  • 如果setParent()相连的两个QObject不在一个线程中,则会失败。
  • When a QObject is moved to another thread, all its children will be automatically moved too.
  • 当一个QObject被移到另一个线程,其所有的孩子都会被自动的移入。
  • moveToThread() will fail if theQObject has a parent.
  • 如果QObject有父母,则moveToThread()会失败。
  • If QObjects are created within QThread::run(), they cannot become children of theQThread object because theQThread does not live in the thread that callsQThread::run().
  • 如果QObject在QThread::run()中创建,则其不能成为QThread对象的孩子,因为QThread并不在它调用的线程中。

Note:A QObject's member variablesdo not automatically become its children. The parent-child relationship must be set by either passing a pointer to the child'sconstructor, or by callingsetParent(). Without this step, the object's member variables will remain in the old thread whenmoveToThread() is called.

注意:QObject的成员变量并不会自动成为其孩子。父子关系必须通过给孩子的构造器传指针或调用setParent()设置。如果没有这个步骤,在调用moveToThread()后,对象的成员变量将会保持在之前的线程中。