Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
08/07/08 12:47
Read: times


 
#157297 - Super-loop contra cooperative multitasking
Responding to: ???'s previous message
Your description of cooperative multitasking is actually a description for a super-loop.

In cooperative multitasking, you do have individual tasks with their own stacks - just as in preemptive multitasking.

It's just that you do not have a timer that slices the time between the tasks. Instead, you sprinkle your code with function calls to tell the OS that this is a safe/suitable place to perform a switch.

Windows 3.1 for example used cooperative multitasking. Real programs with their own stack. But if one program got stuck and stopped to call any switchable Windows function, everything got stuck.

In short, in cooperative multitasking, you do not need any state machines, since each task has a stack and it's own set of local variables.

The reason for cooperative multitasking is when you have OS calls, or RTL functions that are not preemptive. Then you can't let a timer perform the task switch, since the task switches will not be synchronized with regard to dangerous functions.

So cooperative multitasking is almost as problematic for the 8051 architecture as preemptive multitasking. That leaves the developer with super-loops and creative use of interrupts.

List of 27 messages in thread
TopicAuthorDate
Non Blocking timer            01/01/70 00:00      
   Use a hardware timer            01/01/70 00:00      
      Thanks - But.....            01/01/70 00:00      
         State machines            01/01/70 00:00      
            THANKS - That's a great idea            01/01/70 00:00      
               if you have a lot to delay by various delays            01/01/70 00:00      
                  I Like that Idea as well            01/01/70 00:00      
                  A Linked List might be better here            01/01/70 00:00      
                     the correct use takes care of this            01/01/70 00:00      
                        Not necessarily            01/01/70 00:00      
   Cooperative or preemptive multitasking            01/01/70 00:00      
      Super-loop contra cooperative multitasking            01/01/70 00:00      
         Multasking can work on the 8051 ... sometimes            01/01/70 00:00      
            Not just stack            01/01/70 00:00      
               I agree            01/01/70 00:00      
                  Choose your battles carefully            01/01/70 00:00      
               I agree, too            01/01/70 00:00      
                  and            01/01/70 00:00      
                     Never underestimate the usefulnes of interrupts            01/01/70 00:00      
                        a flavor            01/01/70 00:00      
                           prioritizing in super-loop            01/01/70 00:00      
                              the fact is ..            01/01/70 00:00      
                  C works well            01/01/70 00:00      
                  Circular argument?            01/01/70 00:00      
                     Re: Circular Argument            01/01/70 00:00      
                        going round in circles            01/01/70 00:00      
            small multitasker            01/01/70 00:00      

Back to Subject List