Здравствуйте, jyuyjiyuijyu, Вы писали:
J>есть ли примеры удачного применения из реальной жизни ?
J>интересно было бы посмотреть или хотя бы интересные мысли..
J>по удачному применению услышать
Я пишу в том числе для железок, в которых не хватает ресурсов для полноценных потоков, а многозадачность нужна. Использую сопрограммы (реализация своя собственная). Выглядит примерно так (это часть драйвера, управляющего сторонним оборудованием):
CL_line(SomeDriver::lineInit, LINE_INIT) // специальным образом оформленная функция
enum { AfterCalcInit = STEP_USER, WaitClosed, CloseAll, ProductInit };
CL_step0
if (calculatorInitDone())
return AfterCalcInit;
sendSomeCommand();
CL_stepN(CloseAll) // здесь происходит выход из функции и отправка данных устройству
startCycle(); // После получения и обработки ответа вернемся сюда
sendSomeCommand2();
CL_step
sendSomeCommand3();
CL_step
if (nextCycle())
return CloseAll;
sendSomeCommand4();
CL_step
sendSomeCommand5();
...
CL_end
Когда потребовалось компилировать для десктопа, этот код без изменений заработал "внутри" boost::asio.
Использую такую реализацию уже года 2, потихоньку развиваю. Особых нареканий нет