我正在跟踪boost-asio教程,不知道如何使用boost制作多线程服务器。我已经编译和测试了日间客户和日间同步服务器,并改进了通信(服务器请求客户端提供命令,处理它,然后将结果返回给客户端)。但是这个服务器一次只能处理一个客户端。
我想使用boost来制作多线程服务器。还有日间异步服务器,它执行
boost::asio::io_service io_service;
tcp_server server(io_service);
io_service.run();主程序功能。问题是-是否在内部为每个客户端创建一个线程?这是多线程解决方案吗?如果没有-如何使用boost制作多线程服务器?谢谢你的建议。
发布于 2012-12-18 16:36:55
看一看这教程。短期而言:
发布于 2012-12-30 13:09:53
当您想要支持多个客户端时,不需要显式地处理线程。但是,您应该使用异步调用(而不是同步调用,后者在您列出的教程中使用)。看看异步回波tcp服务器示例,它不需要使用线程就可以服务多个客户端。
is boost creating a thread for each client somewhere inside?当使用异步调用时,boost asio在幕后执行这些操作。它可以使用线程,但是它通常不使用,因为有其他的首选机制可以同时使用多个套接字。例如,在linux上有epoll、选择和民意测验 (按优先顺序排列)。我不确定windows上的情况如何,可能有其他机制,或者偏好顺序可能不同。但是无论如何,boost asio会处理这个问题,为您的平台选择最好的机制,并将其隐藏在异步调用的后面。
https://stackoverflow.com/questions/13936567
复制相似问题