There are several cooperative task managers listed in the official library list.
As far as I can tell, typically you pass a function pointer and a repeat time interval to the task manager. The task manager then periodically checks to see if any of the functions should be run.
Under what circumstances would you choose to use this method instead of using the basic "blink without delay" method?