Первоначально я спрашивал - возможно ли выполнить boost :: asio :: write () в обработчике сокета async_receive ()?Это происходит на одном io_service, в одном потоке.У меня есть некоторый код, написанный для этого, и Я думал , что он зависал при вызове write ().Но я забыл нажать кнопку воспроизведения в моей игре (это для маленькой клиент-серверной игры)!Но это не совсем соответствует моему пониманию boost asio, поэтому я оставлю вопрос, но спрашиваю, почему это работает?
Сначала я подумал, что это невозможно, потому чтопоток не может обработать вызов write (), поскольку io_service уже занят этим заданием asynch_receive ().Я подумал, что мне понадобится другой поток, выполняющий io_service.run (), чтобы он мог обрабатывать write ().По-видимому, это не так.
Насколько я помню, поток будет выполнять задания в io_service только по одному.Если это так, и мое приложение работает, то, должно быть, после того, как вы начали выполнять асинхронный обработчик, ваша работа уже перемещена из очереди.Верно?