Is it thread safe to call async_send and async_receive at the same time?

£可爱£侵袭症+ 提交于 2020-01-02 19:13:40

问题


I understood that calling boost::asio::ip::tcp::socket::async_receive (or boost::asio::ip::tcp::socket::async_send) two times may result in a bad behavior.. Is it OK if i call boost::asio::ip::tcp::socket::async_recive and boost::asio::ip::tcp::socket::async_send at the same time?

I am going to have 2 or more threads running the boost::asio::run so you need to take that into account..

Thanks


回答1:


This has to be OK. How else would you perform full duplex async communications on a single service? You need a receive outstanding at all times for incoming data.

The Boost docs indicate only that each of async_read and async_write must be called serially. For example, for async_read:

The program must ensure that the stream performs no other read operations (such as async_read, the stream's async_read_some function, or any other composed operations that perform reads) until this operation completes.

The docs for socket are not specific on this point, it's true.



来源:https://stackoverflow.com/questions/4098455/is-it-thread-safe-to-call-async-send-and-async-receive-at-the-same-time

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!