Doh-Hyoung Kim wrote:
I expected the threads in line 1, 2, 3. the main thread, however, I
thought that
the threads in line 4 and 5 must be different from the main thread and
each other.

'Why all the handlers were executed in the same thread?

I will appreciate if anyone answers this question.
Thanks.


http://doc.trolltech.com/4.5/qthread.html#currentThreadId
Warning: The handle returned by this function is used for internal purposes and should not be used in any application code. On Windows, the returned value is a pseudo-handle for the current thread that cannot be used for numerical comparison.


Running this same code gives me a entirly different result. More of what I expected, but I think this goes to show that the warning should be taken. Mainly signals and slots are handled in the main thread. While the first three messages are in their own thread.

'a' is starting in 140649595894096
'b' is starting in 140649587501392
'c' is starting in 140649579108688
'a' is handling in 140649768179440
'b' is handling in 140649768179440


The idea is you can do processing in Qthread, then emit signals to update the GUI. The run function of QThread is what the new thread is running, and you update the GUI thread by emiting signals. So I would expect the 'starting' message each to be from a different thread and all the 'handling' messages to be from the main GUI thread.

By chaning currentThreadId() to currentThread() you should be able to see this. My output is below:

'a' is starting in <__main__.MyThread object at 0x7a31e8>
'c' is starting in <__main__.MyThread object at 0x7a32f8>
'b' is starting in <__main__.MyThread object at 0x7a3270>
'a' is handling in <PyQt4.QtCore.QThread object at 0x7a3380>
'b' is handling in <PyQt4.QtCore.QThread object at 0x7a3380>


Russell Valentine
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to