[Qt-interest] Signal delivery order?

Atlant Schmidt aschmidt at dekaresearch.com
Wed Jul 14 17:20:06 CEST 2010


Folks:

  I'm trying to understand the order in which signals are delivered to slots.

  When I look at:

    http://doc.trolltech.com/4.6.2/signalsandslots.html

  It first says:

    If several slots are connected to one signal, the slots will be executed
    one after the other, in the order they have been connected, when the
    signal is emitted.

  But later, it seems to take back that promise by saying:

    If on the other hand you want to call two different error functions when
    the number overflows, simply connect the signal to two different slots.
    Qt will call both (in arbitrary order).


  Depending on the implementation details, I could believe that, within a single thread,
  either statement is true (that slots are handed the signal in the order in which they
  were originally connected or that slots are handed the signals in an arbitrary order);
  clearly, the second statement subsumes the first and it's easier for the trolls if it's
  the latter. It's also safer for me if *I BELIEVE* it's the latter, even if it's sometimes
  the former, but shouldn't the documentation be self-consistent? Does anyone know
  which statement ("connection order" vs. "arbitrary order") is more true? And can
  you correct the documentation? ;-)

  Meanwhile, I also wonder about the delivery order when multiple signals are
  emitted. Can we take it on faith that if a single thread emits the signals A, B,
  and C in that order, they will be delivered to a single slot in a single thread in
  the same order? How about if they are delivered to different (multiple) slots
  in the same thread? Still A, B, then C, no matter which slot they're targetting?

  Note: I understand that most of the ordering promises won't hold any time
  signals are delivered to different threads; one doesn't know when the individual
  threads will actually be "runnable" so that they can receive the signals at their slots.
  But I would still expect that multiple signals emitted from one thread and targeting
  a single thread will be delivered to that thread in the order in which they were
  originally emitted.

                                                  Atlant


________________________________
This e-mail and the information, including any attachments, it contains are intended to be a confidential communication only to the person or entity to whom it is addressed and may contain information that is privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please immediately notify the sender and destroy the original message.

Thank you.

Please consider the environment before printing this email.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20100714/88f88463/attachment.html 


More information about the Qt-interest-old mailing list