Зачем нужен async и io_context?

Изучаю многопоточность, и наткнулся на то, что предпочтительно использование async с обработчиками событий в многопоточности. Но я не совсем понимаю в чем его смысл. Перечитал несколько документаци и посмотрел много лекций на эту тему, но так и не монял в чем отличие, например, этого кода:

boost::asio::io_context io;
io.post([](){
   do_some_work()
});

std::thread thread([&io]() {
   io.run();
});

от этого:

std::thread thread([&io]() {
   do_some_work();
});

Так же видел много примеров использования io_context с async в клиент-серверном взаемодействии с так называемыми обработчиками (handlers). Но точно так же не понимаю их смысл. Зачем они нужны, если можно просто писать методы подряд:

socket();
connect();
read();
handle();

Зачем использовать сложную конструкцию async c io_context, если можно написать все структурно (как я сделал выше) c использованием future/promise и будет читабельно и понятно.


Ответы (0 шт):