Semaphore
Semaphore 类层次结构
信号量管理对特定类型的共享资源池的线程访问。
Semaphore 类参考
公共成员函数 | |
Semaphore (int32_t count=0) | |
Semaphore (int32_t count, uint16_t max_count) | |
int32_t | wait (uint32_t millisec=osWaitForever) |
int32_t | wait_until (uint64_t millisec) |
osStatus | release (void) |
~Semaphore () |
Semaphore 示例
使用信号量来保护 printf()。
#include "mbed.h"
Semaphore two_slots(2);
Thread t2;
Thread t3;
void test_thread(void const *name) {
while (true) {
two_slots.wait();
printf("%s\n\r", (const char*)name);
wait(1);
two_slots.release();
}
}
int main (void) {
t2.start(callback(test_thread, (void *)"Th 2"));
t3.start(callback(test_thread, (void *)"Th 3"));
test_thread((void *)"Th 1");
}