Do Arduino users even want multitasking? I would be interested in any feedback.
Recently there have been many proposals for an "Arduino Scheduler".
One of the latest, SCoop, even claims to be an "Android Scheduler". I find this claim to be amazing if the Linux scheduler with cgroups has been implemented on Arduino.
Each proposal claims to have a "simple powerful multitasking solution".
It's not clear what problem these schedulers intend to solve. Some proposals claim to be for "real time operating systems". Other proposals are for schedulers with weak real-time capabilities.
So what is the requirement for an Arduino scheduler? Only Arduino users can answer this.
You don't need a scheduler unless you want multitasking. So do you, as a user, want multitasking? I say "want" not "need" since you can always invent your own solution starting with "bare metal".
If you want multitasking do you need soft real-time? Soft real-time optimizes resource use hoping to improve quality of service in systems like Android, Mac, and Windows.
Do you need hard real-time? Hard real-time uses less than 100% of computing resources but guarantee response within strict time constraints.
Performance is not the only reason to use a given scheduler/RTOS. A RTOS can help simplify a system's architecture by allowing a system to be decomposed into independent tasks and using OS services such as message queues, mutexes, semaphores, event flags, etc. to communicate & synchronize, the system.
A common misconception is that a preemptive RTOS adds an unacceptable amount of overhead. In fact, a preemptive RTOS will only require between 1 and 4% of CPU time in exchange for valuable services.
A cooperative scheduler is often very inefficient since many unnecessary context switches occur as the result of yield calls.
So what is your opinion about Arduino multitasking and schedulers?