Asio内部线程对用户透明吗?
Are Asio internal threads transparent to the users?
从文档来看,大多数Asio类都不是线程安全的。所以我想知道它是安全的用户线程访问异步操作的对象?
例如,如果一个套接字正在异步连接:
asio::async_connect(socket, endpoint_iterator, handler);
我想会有一个Asio内部线程(例如一个运行io_service.run()
)在socket
上做一些事情(否?)。在async_connect
完成之前调用socket.close()
是否安全(例如超时)?它会与任何Asio内部线程竞争吗?
Asio完全隐藏了系统相关线程(pthreads, windows thread)。哪个线程处理你的代码并不重要,重要的是ioservice。
不执行任何异步代码,不调用ioservice.run()。
我希望这是一些帮助。相关文章:
- C++如何通过用户输入删除列表元素
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 如何在全屏模式下(在OpenGL中)使背景透明
- 如何只允许用户输入正整数
- 当使用透明的std函数对象时,我们还需要写空的尖括号吗
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 在C++中,我如何接受不同于同一行的用户输入
- 当用户超过按钮点击限制时报告
- Visual C++(VS2017)中用户定义的转换不明确
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 当用户键入分隔符时,停止getline()输入
- Asio内部线程对用户透明吗?