6
我读过,不建议在不同的线程插座多个操作。但是,如果我从同一线程调用socket.async_read和next socket.async_write(而不等待前一个完成)呢?当我完成其中一个操作时,我可以否认适当的回调会运行吗?Boost.Asio的:我可以做async_read和ASYNC_WRITE同时从一个线程?
我读过,不建议在不同的线程插座多个操作。但是,如果我从同一线程调用socket.async_read和next socket.async_write(而不等待前一个完成)呢?当我完成其中一个操作时,我可以否认适当的回调会运行吗?Boost.Asio的:我可以做async_read和ASYNC_WRITE同时从一个线程?
我发现,是的,你可以有一个未决async_read
和一个待定同一插座上async_write
没有问题。当您拨打io_service::run()
方法时,回调将按预期完成。
发出相同插座,或在同一插座上的多个async_writes多个async_reads,可能导致意外的行为,这取决于插座所涉及的类型。特别是,在同一个TCP套接字上使用多个async_writes可能会导致数据以不同于最初预期的顺序发送,并且会混淆数据发送。在UDP中,它可能更合理,但我仍然会推荐它。
你要问关于TCP套接字? –