I suggest we skip the talk on NIGGA and stay with the topic.
I chuckle when I see comments like, "What are you doing that needs multitasking?" Unless you've tried it, you can't come close to appreciate the programme design power in your hands. Let me explain.
SPLat Controls in Australia have a multitasking technology that is quite simple to use with their controllers. Assume you have two independent programmes: one called pushbutton and the other FillControl. The first simply monitors a group of pushbuttons and sets flags to be read by other programmes. The second has a focus on filling a tank as a function of the pushbutton flags. You could say they are functions but actually the descriptive, "TASK" is more applicable.
If there is a timing event or even a pause, there is no effect on this technique. The controller will check the timing or pause condition, if it hasn't been met, it will leave the task and execute the next task at the point it had left off. If that second task has a timing or pause condition and its conditions hasn't been met, it leaves that task and returns to the first where it left off. If there are no timing or pause conditions in the task, the first line in the task should include yieldTask to exit the task. Seems odd but when the controller returns, it starts off where it left off.... skips the leave statement, executes the task, returns to the top and leaves. Of course, under the hood we have files points and such that we need not have to worry about.
I love the concept and used their product a number of times. It reduces programming and fits nicely into object programming techniques. They do have a low cost controller called EC1 you could try out. Hope they still have it.
I would love to use Arduino in a similar fashion. Mega2560 could have the power to do it. Anyone?