Boost asio 是否支持多线程异步读写?

vvqboy 2015-08-04 02:54:47
我看大多示例, 都是这样的模型
读socket - > 写socket -> 继续调用 读socket 实现循环

这样做, 对立马能返回结果的情况没问题.
可我目前遇到的问题, 是客户端每次会有大量请求, 而每次请求都需要8- 10秒后才能给出回应.
这就需要我使用这样的模型:

一个线程不停接受来自客户端的请求
一个线程不能发送请求结果

而这两个线程都是操作同一个socket


这样做是否会有问题呢?
...全文
259 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
LubinLew 2015-08-04
  • 打赏
  • 举报
回复
accept每次返回的socket文件描述符都是不同的, 你应该用接受线程保存一个描述符队列, 发送线程通过这个队列中描述符向外发送,注意队列操作的互斥。 你的这种方法是不好的,你可以改成接收一个请求就创建一个线程,把描述符传递给线程入口。 更多的方法你可以看看《UNIX网络编程》 下面是一个异步IO的简介你可以参考一下 http://www.wangafu.net/~nickm/libevent-book/01_intro.html
jiqiang01234 2015-08-04
  • 打赏
  • 举报
回复
socket本来就支持同时异步读写,无论什么形式封装的库都肯定支持

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧