Цитата
крутить свой счетчик для каждой из задач идея сама по себе редко когда удачная.
Я вот сейчас немного подумал и.... всё равно не придумал как можно сделать оптимальнее. Как мне кажется во всех вариантах будет еще один байт.
Цитата
timers[i] = (timers[i]>0)? (timers[i]-1):(timers[i]);
это как бы уже перебор.
Ну у меня 0 в счетчике это признак запуска задачи, так что проверять на 0 приходится.
Раньше было
Код
for(uint8_t i=0; i < TaskListLen; i++)
{
if( timers[i] > 0 )
--timers[i];
}
Это было на целых 2 байта длиннее! При прочих равных настройках оптимизации и т.д. Я, так сказать, подчинился основной цели и выбрал сэкономить 2 байта флэша путем ухудшения читабельности кода.
P.S.
Я ночью писал двольно длинную шапку коментов на английском, слушал выступления Скотта Майерса на CPPCon и в момент публицации этого вопроса на форуме у меня была полная голова фич, оверхеда и шедулеров ))))
The truth is out there...