使用 cond_init(3C) 可以初始化 cv 所指向的条件变量。
#include <thread.h> int cond_init(cond_t *cv, int type, int arg);
type 可以是以下值之一:
条件变量还可以通过在清零的内存中进行分配来初始化,在这种情况下假设 type 为 USYNC_THREAD。
多个线程决不能同时初始化同一个条件变量。对于其他线程可能正在使用的条件变量,不得重新初始化。
对于 POSIX 线程,请参见pthread_condattr_init 语法。
#include <thread.h> cond_t cv; int ret; /* to be used within this process only */ ret = cond_init(cv, USYNC_THREAD, 0);
#include <thread.h> cond_t cv; int ret; /* to be used among all processes */ ret = cond_init(&cv, USYNC_PROCESS, 0);
cond_init() 在成功运行后返回 0。如果检测到以下任一情况,cond_init() 将失败并返回对应的值。
EFAULT
描述:cv 指向的地址非法。
EINVAL
描述:type 不是可以识别的类型。