Безопасно ли одновременно вызывать async_send и async_receive? - PullRequest
2 голосов
/ 04 ноября 2010

Я понял, что вызов boost::asio::ip::tcp::socket::async_receive (или boost::asio::ip::tcp::socket::async_send) два раза может привести к плохому поведению ... Хорошо ли, если я звоню boost::asio::ip::tcp::socket::async_recive и boost::asio::ip::tcp::socket::async_send одновременно?

У меня будет 2 или более потоков, выполняющих boost::asio::run, так что вам нужно принять это во внимание ..

Спасибо

1 Ответ

4 голосов
/ 04 ноября 2010

Это должно быть в порядке.Как еще вы могли бы выполнять полнодуплексную асинхронную связь для одного сервиса?Для поступающих данных необходимо постоянно получать выдачу.

Документы Boost указывают только на то, что каждый из async_read и async_write должен вызываться последовательно.Например, для async_read:

Программа должна убедиться, что поток не выполняет никаких других операций чтения (таких как async_read, функция async_read_some потока или любые другие составные операции, которые выполняют чтение) до этогооперация завершена.

Документы для socket не являются специфическими на данный момент, это правда.

...