1

スレッド化されたチャット サーバーを作成しており、すべてのクライアントにメッセージを送信する方法が必要です。グローバル キューを使用できますが、クライアントを処理するスレッドの 1 つだけがメッセージを送信できます。したがって、各クライアントスレッド内に個別のキューオブジェクトを作成し、それらをリストに追加して、各クライアントのキューにメッセージを送信できるようにすることが可能かどうか疑問に思っていました。これは可能ですか?

clientqueues = [] #Global list of client queues

class ClientThread(threading.Thread):
    def __init__(self):
        myqueue = Queue.Queue() #Client queue
        clientqueues.append(myqueue)
        ...
def MessageAllClients(message):
    global clientqueues
    for queue in clientqueues:
        queue.put(message)

これは機能しますか、それとも間違った方法で行っていますか?

4

2 に答える 2

3

あなたのアプローチは問題ありません。私が変更する唯一のことは、グローバル変数ではなく静的メンバーを作成clientqueuesすることです。ClientThread

于 2013-01-20T16:49:30.780 に答える
0

Queue は単なるオブジェクト (Python のすべてのものと同様) であるため、それらのリストを作成しても問題ありません。

于 2013-01-20T16:52:33.533 に答える