【发布时间】:2014-01-02 15:12:28
【问题描述】:
io_service::run()被线程A调用。从线程B调用async_write安全吗?-
io_service::run()由线程 A 调用。异步操作是由线程 A 执行的,还是线程 A 只保证调用处理程序并且在后台可能有额外的线程执行这些操作? io_service::run()被线程 A 调用。一些线程调用async_read和async_write使用相同的缓冲区。假设一次最多只能通过一个操作访问缓冲区是否安全?还是说只有handlers被串行调用,而幕后的读写却可以同时发生?文档说“程序必须确保流不执行其他读取操作(例如
async_read、流的async_read_some函数,或执行读取的任何其他组合操作),直到此操作完成。 ”。将其解释为“您一次不能对一个套接字执行多个读取操作。但您可以对 10 个不同的套接字执行 10 个读取操作。”是否正确?有一个无限期接受数据的套接字,调用
async_read并从 async_read 的处理程序再次调用它是个好主意吗?io_service::stop()是停止所有挂起的异步操作还是只是停止接受新的异步操作并执行挂起的操作?
【问题讨论】:
标签: c++ boost-asio