c – Boost.asio:我可以从一个线程同时执行async_read和async_write吗?

我已经读过不建议对来自不同线程的套接字进行多次操作.但是,如果我从同一个线程socket.async_read和下一个socket.async_write调用(不等待前一个完成)怎么办?当其中一项操作完成后,我可以预见到正确的回调将会运行吗?

解决方法

我发现是的,你可以在同一个套接字上有一个挂起的async_read和一个挂起的async_write而没有问题.当您调用io_service :: run()方法时,回调将按预期完成.

在同一个套接字上发出多个async_reads,或在同一个套接字上发出多个async_writes,可能会导致意外行为,具体取决于所涉及的套接字类型.特别是,在同一个TCP套接字上使用多个async_writes会导致数据以与您原先预期不同的顺序发出,并且数据发送的混合.在UDP中,它可能更合理,但我仍然建议反对它.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...