カウントが 0 より大きくなったとき、sp が指すセマフォー内のカウントを不可分的に減算するには、sema_trywait(3C) を使用します。この関数はブロックしない点を除いて、sema_wait() と同じ働きをします。
#include <thread.h> int sema_trywait(sema_t *sp);
sema_trywait() は、正常終了時に 0 を返します。次のいずれかの条件が検出された場合、sema_trywait() は失敗し、対応する値を返します。
EINVAL
説明:sp が無効なセマフォーを参照しています。
EBUSY
説明:sp が指すセマフォーのカウントが 0 です。