1# condition_variable.h 2 3<!--Kit: Function Flow Runtime Kit--> 4<!--Subsystem: Resourceschedule--> 5<!--Owner: @chuchihtung; @yanleo--> 6<!--Designer: @geoffrey_guo; @huangyouzhong--> 7<!--Tester: @lotsof; @sunxuhao--> 8<!--Adviser: @foryourself--> 9 10## 概述 11 12声明条件变量的C接口。 13 14**库:** libffrt.z.so 15 16**系统能力:** SystemCapability.Resourceschedule.Ffrt.Core 17 18**起始版本:** 10 19 20**相关模块:** [FFRT](capi-ffrt.md) 21 22## 汇总 23 24### 函数 25 26| 名称 | 描述 | 27| -- | -- | 28| [FFRT_C_API int ffrt_cond_init(ffrt_cond_t* cond, const ffrt_condattr_t* attr)](#ffrt_cond_init) | 初始化条件变量。 | 29| [FFRT_C_API int ffrt_cond_signal(ffrt_cond_t* cond)](#ffrt_cond_signal) | 唤醒阻塞在条件变量上的一个任务。 | 30| [FFRT_C_API int ffrt_cond_broadcast(ffrt_cond_t* cond)](#ffrt_cond_broadcast) | 唤醒阻塞在条件变量上的所有任务。 | 31| [FFRT_C_API int ffrt_cond_wait(ffrt_cond_t* cond, ffrt_mutex_t* mutex)](#ffrt_cond_wait) | 条件变量等待函数,条件变量不满足时阻塞当前任务。 | 32| [FFRT_C_API int ffrt_cond_timedwait(ffrt_cond_t* cond, ffrt_mutex_t* mutex, const struct timespec* time_point)](#ffrt_cond_timedwait) | 条件变量超时等待函数,条件变量不满足时阻塞当前任务,超时等待返回。如果达到最大等待时间点时没有调用ffrt_cond_signal或ffrt_cond_broadcast函数解除线程阻塞,则线程会被自动解除阻塞。 | 33| [FFRT_C_API int ffrt_cond_destroy(ffrt_cond_t* cond)](#ffrt_cond_destroy) | 销毁条件变量。 | 34 35## 函数说明 36 37### ffrt_cond_init() 38 39``` 40FFRT_C_API int ffrt_cond_init(ffrt_cond_t* cond, const ffrt_condattr_t* attr) 41``` 42 43**描述** 44 45初始化条件变量。 46 47**起始版本:** 10 48 49 50**参数:** 51 52| 参数项 | 描述 | 53| -- | -- | 54| [ffrt_cond_t](capi-ffrt-ffrt-cond-t.md)* cond | 条件变量指针。 | 55| [const ffrt_condattr_t](capi-ffrt-ffrt-condattr-t.md)* attr | 条件变量属性指针。 | 56 57**返回:** 58 59| 类型 | 说明 | 60| -- | -- | 61| FFRT_C_API int | 初始化条件变量成功返回ffrt_success,<br> 初始化条件变量失败返回ffrt_error_inval。 | 62 63### ffrt_cond_signal() 64 65``` 66FFRT_C_API int ffrt_cond_signal(ffrt_cond_t* cond) 67``` 68 69**描述** 70 71唤醒阻塞在条件变量上的一个任务。 72 73**起始版本:** 10 74 75 76**参数:** 77 78| 参数项 | 描述 | 79| -- | -- | 80| [ffrt_cond_t](capi-ffrt-ffrt-cond-t.md)* cond | 条件变量指针。 | 81 82**返回:** 83 84| 类型 | 说明 | 85| -- | -- | 86| FFRT_C_API int | 唤醒成功返回ffrt_success,<br> 唤醒失败返回ffrt_error_inval。 | 87 88### ffrt_cond_broadcast() 89 90``` 91FFRT_C_API int ffrt_cond_broadcast(ffrt_cond_t* cond) 92``` 93 94**描述** 95 96唤醒阻塞在条件变量上的所有任务。 97 98**起始版本:** 10 99 100 101**参数:** 102 103| 参数项 | 描述 | 104| -- | -- | 105| [ffrt_cond_t](capi-ffrt-ffrt-cond-t.md)* cond | 条件变量指针。 | 106 107**返回:** 108 109| 类型 | 说明 | 110| -- | -- | 111| FFRT_C_API int | 唤醒成功返回ffrt_success,<br> 唤醒失败返回ffrt_error_inval。 | 112 113### ffrt_cond_wait() 114 115``` 116FFRT_C_API int ffrt_cond_wait(ffrt_cond_t* cond, ffrt_mutex_t* mutex) 117``` 118 119**描述** 120 121条件变量等待函数,条件变量不满足时阻塞当前任务。 122 123**起始版本:** 10 124 125 126**参数:** 127 128| 参数项 | 描述 | 129| -- | -- | 130| [ffrt_cond_t](capi-ffrt-ffrt-cond-t.md)* cond | 条件变量指针。 | 131| [ffrt_mutex_t](capi-ffrt-ffrt-mutex-t.md)* mutex | mutex指针。 | 132 133**返回:** 134 135| 类型 | 说明 | 136| -- | -- | 137| FFRT_C_API int | 等待后被成功唤醒返回ffrt_success,<br> 等待失败返回ffrt_error_inval。 | 138 139### ffrt_cond_timedwait() 140 141``` 142FFRT_C_API int ffrt_cond_timedwait(ffrt_cond_t* cond, ffrt_mutex_t* mutex, const struct timespec* time_point) 143``` 144 145**描述** 146 147条件变量超时等待函数,条件变量不满足时阻塞当前任务,超时等待返回。如果达到最大等待时间点时没有调用ffrt_cond_signal或ffrt_cond_broadcast函数解除线程阻塞,则线程会被自动解除阻塞。 148 149**起始版本:** 10 150 151 152**参数:** 153 154| 参数项 | 描述 | 155| -- | -- | 156| [ffrt_cond_t](capi-ffrt-ffrt-cond-t.md)* cond | 条件变量指针。 | 157| [ffrt_mutex_t](capi-ffrt-ffrt-mutex-t.md)* mutex | mutex指针。 | 158| const struct timespec* time_point | 最大等待到的时间点,超过这个时间点等待返回。 | 159 160**返回:** 161 162| 类型 | 说明 | 163| -- | -- | 164| FFRT_C_API int | 等待后被成功唤醒返回ffrt_success,<br> 等待超时返回ffrt_error_timedout,<br> 等待失败ffrt_error_inval。 | 165 166### ffrt_cond_destroy() 167 168``` 169FFRT_C_API int ffrt_cond_destroy(ffrt_cond_t* cond) 170``` 171 172**描述** 173 174销毁条件变量。 175 176**起始版本:** 10 177 178 179**参数:** 180 181| 参数项 | 描述 | 182| -- | -- | 183| [ffrt_cond_t](capi-ffrt-ffrt-cond-t.md)* cond | 条件变量指针。 | 184 185**返回:** 186 187| 类型 | 说明 | 188| -- | -- | 189| FFRT_C_API int | 销毁条件变量成功返回ffrt_success,<br>销毁条件变量失败返回ffrt_error_inval。 | 190 191 192