Здравствуйте, jazzer, Вы писали:
J>Эти "костыли" нужны всегда, когда у тебя объекты шарятся между потоками, и asio тут вообще ни при чем.
претензия fdn721 состоит в том, что asio не предлагает средств для уменьшения сложности написания программ с асинхр вводом\выводом (более конкретно, проблема завершения приложения и отмены асинхр операций, отслеживание времени жизни объектов). как следствие имеем хрупкий код, нестабильность, падения
именно asio должен был что-то предложить.
как вариант, сигнатура функции асинхронных операций должна не только принимать континуацию, но и выдавать хендл для управления запущенной операцией. это практикуется в том же C#:
https://msdn.microsoft.com/en-us/library/dd321424(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/hh191443(v=vs.110).aspx
пример:
template<typename ConnectHandler>
Task<void> async_connect(
const endpoint_type & peer_endpoint,
ConnectHandler handler);