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

队列只是一个对象(就像 Python 中的所有东西一样),所以列出它们没有问题。

于 2013-01-20T16:52:33.533 回答