Asio内部线程对用户是否透明?

时间:2014-08-11 19:31:37

标签: c++ c++11 boost boost-asio

从文档中,大多数Asio类都不是线程安全的。所以我想知道用户线程在异步操作中访问对象是否安全?

例如,如果套接字是异步连接:

asio::async_connect(socket, endpoint_iterator, handler);

我想会有一个Asio内部线程(例如一个运行io_service.run())来对socket执行某些操作(否?)。在socket.close()完成之前调用async_connect是否安全(例如超时)?它会与任何Asio内部线程竞争吗?

1 个答案:

答案 0 :(得分:1)

Asio完全隐藏了系统相关的线程(pthreads,windows线程)。 处理代码的哪个线程无关紧要,ioservice有什么关系。

所有人都没有执行异步代码,请不要调用ioservice.run()。

我希望这有一些帮助。