Re[11]: Разработка на чистом C
От: Evgeny.Panasyuk Россия  
Дата: 02.11.16 12:19
Оценка: +1
Здравствуйте, push, Вы писали:

P>Ещё раз — исключение передаёт информацию о проблеме выше по стеку вызовов — где стек вызовов в асинхронной модели? Вот то то же и оно.


Кстати, асинхронные модели сейчас частенько применяются из-за недостатков OS, а не из революционной необходимости. Эта асинхронная лапша во многих случаях выпрямляется во вполне себе синхронный код с помощью сопроцедур.
В частности пример из Boost.Asio:
boost::asio::spawn(my_strand, do_echo);

// ...

void do_echo(boost::asio::yield_context yield)
{
  try
  {
    char data[128];
    for (;;)
    {
      std::size_t length =
        my_socket.async_read_some(
          boost::asio::buffer(data), yield);

      boost::asio::async_write(my_socket,
          boost::asio::buffer(data, length), yield);
    }
  }
  catch (std::exception& e)
  {
    // ...
  }
}

If the asynchronous operation fails, the error_code is converted into a system_error exception and thrown.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.