io_service::run()
由线程A调用。从线程B调用async_write
是否安全?
io_service::run()
由线程A调用。异步操作是由线程A执行的,还是线程A只保证调用处理程序,在幕后可能有其他线程执行操作?
io_service::run()
由线程A调用。某些线程使用相同的缓冲区调用async_read
和async_write
。假设一次最多只能访问一个缓冲区,是否安全?或者只是连续调用处理程序,但在幕后读取和写入可以同时进行?
文档说“程序必须确保流不执行任何其他读取操作(例如async_read
,流的async_read_some
函数或执行读取的任何其他组合操作”,直到这个操作完成了。“将其解释为“您不能一次在套接字上执行多个读取操作。但是您可以在10个不同的套接字上执行10次读取操作。”?
有一个无限期接受数据的套接字,调用async_read
并从async_read的处理程序再次调用它是个好主意吗?
io_service::stop()
是否会停止所有待处理的异步操作,或者只是停止接受新的操作并执行待处理的操作?
答案 0 :(得分:3)
io_service是一个消息队列(基本上),而将消息发布到io_service的套接字完全不同。
答案 1 :(得分:1)
1:是
4:是的,可以在不同的套接字上执行不同的操作。
5:是的,如果你查看他们如何做的例子。
6:考虑reference manual说
其run()或run_one()成员函数的所有调用都应尽快返回。
我会说它可以做任何事。
对于2号和6号,源代码可用,因此回答这些问题的最佳方法是下载并阅读。