使用 sema_trywait(3C) 可以在计数大于零时,以原子方式减小 sp 所指向的信号的计数。此函数是 sema_wait() 的非阻塞版本。
#include <thread.h> int sema_trywait(sema_t *sp);
sema_trywait() 在成功运行后返回 0。如果检测到以下任一情况,sema_trywait() 将失败并返回对应的值。
EINVAL
sp 指向的信号无效。
EBUSY
sp 所指向的信号的计数为零。