2011-07-30 11 views
0

私はnetmeetingのようなチャットアプリケーションを開発するプロジェクトに入っています。私は別のスレッドを1つのGUI(gtk.main)別のクライアントチャット要求(socket.accept)を同時に受け入れている別にしたい。しかし、問題..Pygtkのスレッドを使用

はここにあり、クライアントの要求を受け入れるための第二のスレッドでコードの私のシンプルなラインである:私はそれがgtk.mainループと私の第二に切り替えるアプリケーションを実行すると

while True: 
    self.new_sock,self.client_addr = self.sock.accept() 
    #CloseDialog is a messege box 
    respons=self.CloseDialog.run() 
    if respons==gtk.RESPONSE_YES: 
     #Call a Chat Window   
    elif respons==gtk.RESPONSE_NO: 
     #Close the requested socket 

スレッドは実行できません。これらのスレッドを並列実行するプロセスはありますか?しかし、これを実装するのは非常に混乱しています。あなたがそれ以上の情報を必要とするなら、私はあなたにそれを与えるでしょう。助けてください.. ありがとうございました

答えて

1

PyGTK FAQをご覧ください。特に、私はgobject.idle_add()のアプローチを提案します。 2番目のスレッドが任意のGUIとの対話を必要とする場合、) `gobject.idle_add(メインスレッドで実行されているいくつかのコードをスケジュールし、ソートのこのような:

def ask_close(): 
    self.CloseDialog.run() 
gobject.idle_add (ask_close) 

その後、あなたはときのために、いくつかのミューテックスXを待つ必要があるだろう答え(メインスレッド)が到着します。また、モーダルダイアログ(run())を使用しないことをお勧めします。これは、複数のスレッドを持つ目的を大きく凌駕するためです。代わりに、present()を使用し、responseシグナルへのコールバックを接続します。このコールバックはmutex Xを解放して、2番目のスレッドが待機を停止して応答を処理できるようにします。