我正试着用Thrift写一个简单的服务器。一开始,它看起来很有希望,但我遇到了一个同时连接多个客户端的问题。我使用的是TThreadPoolServer,它允许4个客户端连接,然后阻止其他客户端,直到我从连接的客户端中删除一个。我可以做些什么来允许更多(可能是几百个)客户端同时连接,而不增加线程的数量。我假设工作线程允许一次执行一个客户端请求,但它看起来像是一个线程处理一个连接,直到它关闭。我希望避免客户端必须重新打开套接字才能执行操作的情况。
发布于 2010-06-18 15:51:18
采取另一种方法,如果您使用C++构建服务器,则可以使用TNonblockingServer而不是TThreadPoolServer,这将允许您一次接受多个连接,而不管有多少个线程处于活动状态,等等……
也就是说,您实际上不一定能够更快地完成工作(处理程序仍然在线程池中执行),但是更多的客户端将能够同时连接到您。
以下是NB服务器的代码:
shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());
shared_ptr<MyHandler> handler(new MyHandler());
shared_ptr<TProcessor> processor(new MyProcessor(handler));
TNonblockingServer server(processor, protocolFactory, port);
https://stackoverflow.com/questions/954945
复制相似问题