多线程编程指南

初始化条件变量

使用 cond_init(3C) 可以初始化 cv 所指向的条件变量。

cond_init 语法

#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 返回值

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


EFAULT

描述:

cv 指向的地址非法。


EINVAL

描述:

type 不是可以识别的类型。