Когда был задан этот вопрос, я полагаю, что у ASIO не было ни одного примера того, как выполнить то, что нужно OP, то есть тайм-аут операции блокировки, такой как операция сокета блокировки. Сейчас существуют примеры, чтобы показать вам, как именно это сделать. пример кажется длинным, но это потому, что он ХОРОШО прокомментирован. В нем показано, как использовать ioservice в режиме «одного выстрела».
Я думаю, что пример - отличное решение. Другие решения здесь нарушают мобильность и не используют ioservice. если переносимость не важна, а ioservice, как представляется, требует значительных затрат, то НЕ следует использовать ASIO. Несмотря ни на что, у вас будет создан ioservice (от него зависит почти вся функциональность ASIO, даже синхронизирующие сокеты), так что воспользуйтесь этим.
Пример таймаута ASIO при блокировке вызова
Документация ASIO была обновлена, так что ознакомьтесь с новыми примерами того, как преодолеть некоторые из имеющихся у ASIO «ошибок».