ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
13 июля
455285
Скрипач, пророк (18.10.2013 18:53 - 19.10.2013 10:49, просмотров: 8588)
С подачи Д.ARMоед-а вспомнилась тема("Асинхронный велосипед", ссылка), заданная bialix. ** http://caxapa.ru/339089.html
Берем версию прототридс для С++ (здесь ) class Long_Song_Proc : public Protothread { public: char a,b; // Параметры uint8_t try_count; char rc; // Код окончания virtual bool run(); }; class Complex_Proc : public Protothread { public: char x,y; // Параметры char rc; // Код окончания Long_Song_Proc ls; // Дочерние процессы Rarely_needed_Proc* rn; // Если нужен не постоянно, то // можно и в куче разместить :) virtual bool run(); }; Complex_Proc::run(){ rn = new Rarely_needed_Proc; // Вариант запуска в куче rn->a = "a"; PT_WAIT_THREAD(*rn); rc = rn->rc; // Перед освобождением памяти скопировали результат delete rn; ls.a = "a"; // Передача параметров ls.b = "b"; ls.try_count = 3; PT_WAIT_THREAD(ls); // Ждем асинхронную операцию switch(ls.rc){ // Разбор результата case RC_OK: //... case RC_TIMEOUT: //.. case RC_UNKNOWN_FAULT: default: //... } };
... но не любой ценой.