多线程编程指南

基于信号计数进行阻塞

使用 sem_wait(3RT) 可以阻塞调用线程,直到 sem 所指示的信号计数大于零为止,之后以原子方式减小计数。

sem_wait 语法

int	sem_wait(sem_t *sem);
#include <semaphore.h>



sem_t sem;

int ret;



ret = sem_wait(&sem); /* wait for semaphore */

sem_wait 返回值

sem_wait() 在成功完成之后会返回零。其他任何返回值都表示出现了错误。如果出现以下任一情况,该函数将失败并返回对应的值。


EINVAL

描述:

sem 所指示的地址非法。


EINTR

描述:

此函数已被信号中断。