Protothread

A protothread is a low-overhead mechanism for concurrent programming.

Protothreads function as stackless, lightweight threads providing a blocking context cheaply using minimal memory per protothread (on the order of single bytes).

Protothreads are used to accomplish a non-preempted form of concurrency known as cooperative multitasking and, therefore, do not incur context switch when yielding to another thread. Within a protothread, yielding is accomplished by utilizing Duff's device within a thread's function and an external variable used in within the switch statement. This allows jumping (resuming) from a yield upon another function call. In order to block threads, these yields may be guarded by a conditional so that successive calls to the same function will yield unless the guard conditional is true. Because protothreads are accomplished by successive calls to a function, they must retain their state through the use of external, often global, variables.[1]

The protothread concept was developed by Adam Dunkels and Oliver Schmidt.[2]

See also

References

  1. A. Dunkels, O. Schmidt, T. Voigt, and M. Ali, Protothreads: Simplifying Event-Driven Programming of Memory-Constrained Embedded Systems, Proc. ACM SenSys, Boulder, CO, USA, Nov 2006. (PDF, Presentation slides)
  2. Adam Dunkels. "Protothreads - Lightweight, Stackless Threads in C". Dunkels.com. Retrieved April 21, 2017.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.