スレッドとメッセージキュー

実行単位であるスレッドにはそれぞれメッセージキューが1本ずつある.各Windowはスレッドに関連付けられており,その自身が関連付けられているスレッドに送られたメッセージのみ処理することができる.

よって,以下のように__init__の中でウィンドウを作ってもrunの中のメッセージループでは一切メッセージを処理することができない.

import thread, threading
class WindowThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        print thread.get_ident() # スレッドA(呼び出し元スレッド)
        self.win = Window()

    def run(self):
        print thread.get_ident() # スレッドB
        self.win.PumpMessages() # メッセージループ