ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
339092 Топик полностью
bialix (06.07.2012 06:42, просмотров: 310) ответил bialix на Изобретаю велосипед на тему асинхронных функций. Предлагаю вам начинать кидаться гнилыми помидорами и тухлыми яйками, либо дополнить своими дельными соображениями если таковые имеются. Вобщем, чем плохая тема для тяпницы?
Вопросы к коллективному разуму, чтобы начать обсуждение. Вопросы общего плана: 1) Были ли у вас ситуации, когда вы бы стали использовать такие асинхронные функции? 2) Если вы используете автоматы и вас все устраивает, стали бы вы изредка пользоваться такими асинхронными функциями? 3) Считаете ли вы, что спрятать низкоуровневую машинерию за макросами Си (или еще как-то) поможет достичь понятности в таком коде? 4) Не слишком ли много я спрятал внутри своих гипотетических макросов, может быть вы хотели бы что-то видеть явно? Вопросы более конкретные: 5) За фасадом прячутся callbacks и контексты для построения машины Даффа. Структура с контекстом должна быть нелокальной. Для микроконтроллеров с малым размером внутреннего ОЗУ мы можем задействовать либо статическую, либо глобальную переменную на каждый контекст. Для общего применения (на нормальных машинах) мы вполне можем выделять память на стеке через malloc/free. Считаете ли вы это важным? 6) Любые локальные переменные внутри ASYNC_MASTER или ASYNC_FUNC будут потеряны при постановке "на паузу". Чтобы не терять, их тоже можно сделать статичными, либо положить в контекст. В прототредах на это просто обращено внимание, однако никаких вспомогательных механизмов нет. 7) Если попытаться скрестить такие асинхронные функции с чистыми прототредами, то может возникнуть конфликт по макросам. Я пока не знаю, как с этим бороться. Ваши мысли?