Вы не утверждаете, существует ли требование не использовать асинхронные API, поэтому, возможно, это поможет вам, а может, и нет:
Если я вас неправильно понимаю, я думаю, что SO ответ, на который вы ссылаетесь, ищетв другом случае использования, т.е. время ожидания с использованием tcp :: iostream.Если вы просто хотите добавить тайм-аут к чтению, вы смотрели примеры timeout в документации по asio ?Это стандартный подход к тайм-ауту операции сокета.