多线程编程指南

基于信号计数阻塞

使用 sema_wait(3C) 可以一直阻塞调用线程,直到 sp 所指向的信号的计数变得大于零为止。计数变得大于零时,系统会以原子方式减小计数。

sema_wait 语法

#include <thread.h>



int sema_wait(sema_t *sp);

sema_wait 返回值

sema_wait() 在成功运行后返回 0。如果检测到以下任一情况,sema_wait() 将失败并返回对应的值。


EINVAL

描述:

sp 引用的信号无效。


EINTR

描述:

等待过程已被信号或 fork() 中断。