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:
mab5449
Date:
Fri Jan 13 19:50:12 2017 +0000
Revision:
5:574f47121e8e
Parent:
4:ec4791bc6554
Child:
6:1a383b363dc3
Updated to mbed 5

Who changed what in which revision?

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