Asio内部线程对用户透明吗?

Are Asio internal threads transparent to the users?

本文关键字:透明 用户 内部 线程 Asio      更新时间:2023-10-16

从文档来看,大多数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()。

我希望这是一些帮助。