I am referring to Anatoli Arkhipenko's TaskScheduler Library available through the Arduino IDE library manager and also here: GitHub - arkhipenko/TaskScheduler: Cooperative multitasking for Arduino, ESPx and STM32 microcontrollers
It's inevitable that for any project of moderate complexity you end up with various tasks that need to execute with different timings - a beeper beeps for a certain time and an LED blinks for a different time and don't forget to check for inputs and update your outputs. It doesn't take long for delay() to get thrown right out the window. Tracking millis() works, but with all your start time and previous time and duration variables, it can get a bit unwieldy and you still lose time to checking each task more often than is really necessary. Using a scheduler, where you can submit each task with a duration, number of repetitions, first iteration code, etc. along with the ability to add, delete, and modify tasks from within other tasks, seems a very efficient way to execute code. I've played with it a bit and it seems to work fine.
With all that capability and organization in a very small library I would expect it to be very popular, but it looks like hardly anyone uses it. I can't find any references to it on this forum. What are you experiences with this library and with cooperative multitasking on Arduino Uno/Nano/etc in general? Are there major shortcomings or pitfalls that I should watch out for? Is it just less useful than it seems?