首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多线程boost-asio服务器(vs boost异步服务器教程)

多线程boost-asio服务器(vs boost异步服务器教程)
EN

Stack Overflow用户
提问于 2012-12-18 15:47:51
回答 2查看 5.5K关注 0票数 1

我正在跟踪boost-asio教程,不知道如何使用boost制作多线程服务器。我已经编译和测试了日间客户日间同步服务器,并改进了通信(服务器请求客户端提供命令,处理它,然后将结果返回给客户端)。但是这个服务器一次只能处理一个客户端。

我想使用boost来制作多线程服务器。还有日间异步服务器,它执行

代码语言:javascript
复制
boost::asio::io_service io_service;
tcp_server server(io_service);
io_service.run();

主程序功能。问题是-是否在内部为每个客户端创建一个线程?这是多线程解决方案吗?如果没有-如何使用boost制作多线程服务器?谢谢你的建议。

EN

回答 2

Stack Overflow用户

发布于 2012-12-18 16:36:55

看一看教程。短期而言:

  • 多线程中的io_service.run()提供线程池
  • 多个io_services提供完全分离的线程
票数 3
EN

Stack Overflow用户

发布于 2012-12-30 13:09:53

当您想要支持多个客户端时,不需要显式地处理线程。但是,您应该使用异步调用(而不是同步调用,后者在您列出的教程中使用)。看看异步回波tcp服务器示例,它不需要使用线程就可以服务多个客户端。

代码语言:javascript
复制
is boost creating a thread for each client somewhere inside?

当使用异步调用时,boost asio在幕后执行这些操作。它可以使用线程,但是它通常不使用,因为有其他的首选机制可以同时使用多个套接字。例如,在linux上有epoll选择民意测验 (按优先顺序排列)。我不确定windows上的情况如何,可能有其他机制,或者偏好顺序可能不同。但是无论如何,boost asio会处理这个问题,为您的平台选择最好的机制,并将其隐藏在异步调用的后面。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13936567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档