12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /**
- \defgroup pt Protothreads
- @{
- Protothreads are implemented in a single header file, pt.h, which
- includes the local continuations header file, lc.h. This file in turn
- includes the actual implementation of local continuations, which
- typically also is contained in a single header file.
- */
- /** @} */
- /**
- \defgroup examples Examples
- @{
- \section example-small A small example
- This first example shows a very simple program: two protothreads
- waiting for each other to toggle two flags. The code illustrates how
- to write protothreads code, how to initialize protothreads, and how to
- schedule them.
- \include example-small.c
- \section example-code-lock A code-lock
- This example shows how to implement a simple code lock - the kind of
- device that is placed next to doors and that you have to push a four
- digit number into in order to unlock the door.
- The code lock waits for key presses from a numeric keyboard and if the
- correct code is entered, the lock is unlocked. There is a maximum time
- of one second between each key press, and after the correct code has
- been entered, no more keys must be pressed for 0.5 seconds before the
- lock is opened.
- \include example-codelock.c
- \section example-buffer The bounded buffer with protothread semaphores
- The following example shows how to implement the bounded buffer
- problem using the protothreads semaphore library. The example uses
- three protothreads: one producer() protothread that produces items,
- one consumer() protothread that consumes items, and one
- driver_thread() that schedules the producer and consumer protothreads.
- Note that there is no need for a mutex to guard the add_to_buffer()
- and get_from_buffer() functions because of the implicit locking
- semantics of protothreads - a protothread will never be preempted and
- will never block except in an explicit PT_WAIT statement.
- \include example-buffer.c
- */
- /** @} */
|