ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
10 мая
221923 Топик полностью
bialix (15.11.2010 15:10, просмотров: 87) ответил Vit на я использую примерно те coroutines, из которых эти прототриды собственно появились. но иногда бывает нужно "снаружи" поуправлять состоянием автомата - тогда ( а это очень редко) использую передачу состояния как параметра. для вложения автомата
исходники я читаю еще с прошлой недели и основную идею понял с самого начала. теперь пытаюсь понять "нюансы" и "детали". эта "аж шелуха" (как вы ее называете) не такая уж и бесполезная, по крайней мере передавать указатель на контекст -- это очень и очень правильно. От того, как это сделано в coroutines -- меня просто передергивает. Здесь хотя бы все понятно и читаемо. Однако мне местами не хватает примеров использования, а в официальном релизе не все макросы охвачены. Как раз в protothreads все намного удобнее (и мое ИМХО -- правильнее) с точки зрения "снаружи поуправлять" и "напрямую сброс состояния дочернего потока". Поскольку контекст потока у вас в руках, а не где-то спрятан внутри в виде статической переменной. Поэтому вашу фразу
Но, используя эти макросы, напрямую сброс состояния дочернего трида недоступен - спрашивается, зачем оно тогда - модное слово в поток статей?
я как ни пытаюсь, но раскодировать не могу. Теперь моя ремарка насчет структуры контекста. Вы написали:
нужно иметь статическую структуру pt для него (а в pt лежит аж одна переменная состояний).
Есть такой древний сишный способ "наследования" структур: берем структуру, которую надо расширить своими полями, объявляем новую структуру, копируем в начало переменные из оригинальной структуры и добавляем в конец свои переменные. Теперь во все функции/макросы, работающие с оригинальной структурой можно передавать указатель на свою "расширенную" структуру и все будет работать на ура. typedef struct MyPt { lc_t lc; // из стандартной struct pt int i; // моя переменная для организации цикла например int result; // через эту переменную я могу вернуть результат наружу } MyPt; Конечно в плюсах все намного красивее, кто же спорит. Итого: спасибо за ваши ответы, но я ждал ответы именно про protothreads с живыми примерами, ваши ответы мне не сильно помогают, увы. ЗЫ: гласная в слове thread читается как Э, а не И, поэтому лучше не писать "трид", а еще лучше использовать русское слово "поток".