Скрипачпророк (10.07.2012 11:44 - 13:36, просмотров: 439) ответил Д.ARMоед на Вот очень близкая работа. Вероятно стоит абстрагироваться от exception и смотреть на это как на "ситуацию"(в терминах эль-76)
А может просто снегом?" Для себя, к ProtoThreads добавил пару макросов:
#define PT_GOTO(pt) \
do { \
return PT_YIELDED; \
} while(0)
#define PT_LABEL(pt) LC_SET((pt)->lc)
По скольку у меня сканирование,
вопрос таймаутов закрывается так:
T_RST(&timer);
PT_LABEL(pt);
if(ReadByte(&buf[i++])){
if(!cond1) // Всякая обработка
if(!cond2) T_RST(&timer);
}
if( T_SECS(timer) > delay_secs){
// Обрабатываем таймаут
};
PT_GOTO(pt);
На мой взгляд, важно "вовремя остановиться",
чтобы не оказалось что вы уже пишите не на Си,
а на некоем своем, даже отдаленно на Си не похожем
языке :)
... но не любой ценой.