Basic example showing the Semaphore API

Dependencies:   mbed-rtos mbed

mbed 2 and mbed OS 5

This is an mbed 2 example. mbed OS 5 has integrated the mbed library with mbed-rtos. For an mbed-os example, please see:

Import programrtos_semaphore

semaphore example

Committer:
emilmont
Date:
Fri Jul 13 10:52:33 2012 +0000
Revision:
1:bdf73f017a77
Parent:
0:743b15bc7d6f
Child:
4:ec4791bc6554
First implementation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 1:bdf73f017a77 1 #include "mbed.h"
emilmont 1:bdf73f017a77 2 #include "rtos.h"
emilmont 1:bdf73f017a77 3
emilmont 1:bdf73f017a77 4 Semaphore two_slots(2);
emilmont 1:bdf73f017a77 5
emilmont 1:bdf73f017a77 6 void test_thread(void const *name) {
emilmont 1:bdf73f017a77 7 while (true) {
emilmont 1:bdf73f017a77 8 two_slots.wait();
emilmont 1:bdf73f017a77 9 printf("%s\n\r", (const char*)name);
emilmont 1:bdf73f017a77 10 Thread::wait(1000);
emilmont 1:bdf73f017a77 11 two_slots.release();
emilmont 1:bdf73f017a77 12 }
emilmont 1:bdf73f017a77 13 }
emilmont 1:bdf73f017a77 14
emilmont 1:bdf73f017a77 15 int main (void) {
emilmont 1:bdf73f017a77 16 Thread t2(test_thread, (void *)"Th 2");
emilmont 1:bdf73f017a77 17 Thread t3(test_thread, (void *)"Th 3");
emilmont 1:bdf73f017a77 18
emilmont 1:bdf73f017a77 19 test_thread((void *)"Th 1");
emilmont 1:bdf73f017a77 20 }