ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
1058202 Топик полностью
Vit (06.12.2020 19:37, просмотров: 536) ответил Dingo на Спасибо за найденную ошибку. Начинал как вариант со списками, сейчас склоняюсь к мысли вообще выкинуть этот изврат, ибо там, где уместно применить "это-вот-всё", там списки лишние. Тогда будет возможность дёргать задачу по номеру (из прерываний удобней, например), а не по функции.
Считаю списки более удобным решением. Как минимум для отладки. Невключение модуля - просто коммент строки, а не застирывание массива, правка каких-то конфигов... 

Можно наоборот - получение следующего указателя на функцию (задачу) выделить в отдельную функцию/макрос.

Аналогично системная функция добавления в список может просто ничего не делать, если используется массив. В варианте со списком задача может быть, например, суицидной и/или, например, добавляться в список в обработчике прерываний (но без проверок на дидлок это чревато, а с может выполняться дольше, чем хотелось бы).

Для нумерации задач и определения размера константного массива можно использовать enum с элементами, которые именованные константы (номера) для задач, а последнее поле - есть всегда и оно длина массива. Но это опять замес пользовательского кода и системного. Хотя и это решаемо.

Задачу дергать из прерываний в кооперативке? Не совсем представляю как это сделать.

Если не делать шедулер с элементами event-driven и/или time-triggered архитектур, то этот перебор функций в массиве ничем особо от биглупа не отличается.