1# mutex.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声明mutex的C接口。 13 14**引用文件:** <ffrt/mutex.h> 15 16**库:** libffrt.z.so 17 18**系统能力:** SystemCapability.Resourceschedule.Ffrt.Core 19 20**起始版本:** 10 21 22**相关模块:** [FFRT](capi-ffrt.md) 23 24## 汇总 25 26### 函数 27 28| 名称 | 描述 | 29| -- | -- | 30| [FFRT_C_API int ffrt_mutexattr_init(ffrt_mutexattr_t* attr)](#ffrt_mutexattr_init) | 初始化mutex属性。 | 31| [FFRT_C_API int ffrt_mutexattr_settype(ffrt_mutexattr_t* attr, int type)](#ffrt_mutexattr_settype) | 设置mutex属性类型。 | 32| [FFRT_C_API int ffrt_mutexattr_gettype(ffrt_mutexattr_t* attr, int* type)](#ffrt_mutexattr_gettype) | 获取mutex类型。 | 33| [FFRT_C_API int ffrt_mutexattr_destroy(ffrt_mutexattr_t* attr)](#ffrt_mutexattr_destroy) | 销毁mutex属性,用户需要调用此接口。 | 34| [FFRT_C_API int ffrt_mutex_init(ffrt_mutex_t* mutex, const ffrt_mutexattr_t* attr)](#ffrt_mutex_init) | 初始化mutex。 | 35| [FFRT_C_API int ffrt_mutex_lock(ffrt_mutex_t* mutex)](#ffrt_mutex_lock) | 获取mutex。 | 36| [FFRT_C_API int ffrt_mutex_unlock(ffrt_mutex_t* mutex)](#ffrt_mutex_unlock) | 释放mutex。 | 37| [FFRT_C_API int ffrt_mutex_trylock(ffrt_mutex_t* mutex)](#ffrt_mutex_trylock) | 尝试获取mutex。 | 38| [FFRT_C_API int ffrt_mutex_destroy(ffrt_mutex_t* mutex)](#ffrt_mutex_destroy) | 销毁mutex。 | 39 40## 函数说明 41 42### ffrt_mutexattr_init() 43 44``` 45FFRT_C_API int ffrt_mutexattr_init(ffrt_mutexattr_t* attr) 46``` 47 48**描述** 49 50初始化mutex属性。 51 52**起始版本:** 12 53 54 55**参数:** 56 57| 参数项 | 描述 | 58| -- | -- | 59| [ffrt_mutexattr_t](capi-ffrt-ffrt-mutexattr-t.md)* attr | mutex属性指针。 | 60 61**返回:** 62 63| 类型 | 说明 | 64| -- | -- | 65| FFRT_C_API int | mutex属性初始化成功返回ffrt_success,<br> mutex属性初始化失败返回ffrt_error_inval。 | 66 67### ffrt_mutexattr_settype() 68 69``` 70FFRT_C_API int ffrt_mutexattr_settype(ffrt_mutexattr_t* attr, int type) 71``` 72 73**描述** 74 75设置mutex属性类型。 76 77**起始版本:** 12 78 79 80**参数:** 81 82| 参数项 | 描述 | 83| -- | -- | 84| [ffrt_mutexattr_t](capi-ffrt-ffrt-mutexattr-t.md)* attr | mutex属性指针。 | 85| int type | mutex类型。 | 86 87**返回:** 88 89| 类型 | 说明 | 90| -- | -- | 91| FFRT_C_API int | mutex属性类型设置成功返回ffrt_success,<br> mutex属性指针是空或者<br> mutex类型不是ffrt_mutex_normal或ffrt_mutex_recursive返回ffrt_error_inval。 | 92 93### ffrt_mutexattr_gettype() 94 95``` 96FFRT_C_API int ffrt_mutexattr_gettype(ffrt_mutexattr_t* attr, int* type) 97``` 98 99**描述** 100 101获取mutex类型。 102 103**起始版本:** 12 104 105 106**参数:** 107 108| 参数项 | 描述 | 109| -- | -- | 110| [ffrt_mutexattr_t](capi-ffrt-ffrt-mutexattr-t.md)* attr | mutex属性指针。 | 111| int* type | mutex类型指针。 | 112 113**返回:** 114 115| 类型 | 说明 | 116| -- | -- | 117| FFRT_C_API int | mutex类型获取成功返回ffrt_success,<br> mutex属性指针或mutex类型指针是空返回ffrt_error_inval。 | 118 119### ffrt_mutexattr_destroy() 120 121``` 122FFRT_C_API int ffrt_mutexattr_destroy(ffrt_mutexattr_t* attr) 123``` 124 125**描述** 126 127销毁mutex属性,用户需要调用此接口。 128 129**起始版本:** 12 130 131 132**参数:** 133 134| 参数项 | 描述 | 135| -- | -- | 136| [ffrt_mutexattr_t](capi-ffrt-ffrt-mutexattr-t.md)* attr | mutex属性指针。 | 137 138**返回:** 139 140| 类型 | 说明 | 141| -- | -- | 142| FFRT_C_API int | mutex属性销毁成功返回ffrt_success,<br> mutex属性销毁失败返回ffrt_error_inval。 | 143 144### ffrt_mutex_init() 145 146``` 147FFRT_C_API int ffrt_mutex_init(ffrt_mutex_t* mutex, const ffrt_mutexattr_t* attr) 148``` 149 150**描述** 151 152初始化mutex。 153 154**起始版本:** 10 155 156 157**参数:** 158 159| 参数项 | 描述 | 160| -- | -- | 161| [ffrt_mutex_t](capi-ffrt-ffrt-mutex-t.md)* mutex | mutex指针。 | 162| [const ffrt_mutexattr_t](capi-ffrt-ffrt-mutexattr-t.md)* attr | mutex属性指针。 | 163 164**返回:** 165 166| 类型 | 说明 | 167| -- | -- | 168| FFRT_C_API int | 初始化mutex成功返回ffrt_success,<br> 初始化mutex失败返回ffrt_error_inval。 | 169 170### ffrt_mutex_lock() 171 172``` 173FFRT_C_API int ffrt_mutex_lock(ffrt_mutex_t* mutex) 174``` 175 176**描述** 177 178获取mutex。 179 180**起始版本:** 10 181 182 183**参数:** 184 185| 参数项 | 描述 | 186| -- | -- | 187| [ffrt_mutex_t](capi-ffrt-ffrt-mutex-t.md)* mutex | mutex指针。 | 188 189**返回:** 190 191| 类型 | 说明 | 192| -- | -- | 193| FFRT_C_API int | 获取mutex成功返回ffrt_success,<br> 获取mutex失败返回ffrt_error_inval或者阻塞当前任务。 | 194 195### ffrt_mutex_unlock() 196 197``` 198FFRT_C_API int ffrt_mutex_unlock(ffrt_mutex_t* mutex) 199``` 200 201**描述** 202 203释放mutex。 204 205**起始版本:** 10 206 207 208**参数:** 209 210| 参数项 | 描述 | 211| -- | -- | 212| [ffrt_mutex_t](capi-ffrt-ffrt-mutex-t.md)* mutex | mutex指针。 | 213 214**返回:** 215 216| 类型 | 说明 | 217| -- | -- | 218| FFRT_C_API int | 释放mutex成功返回ffrt_success,<br> 释放mutex失败返回ffrt_error_inval。 | 219 220### ffrt_mutex_trylock() 221 222``` 223FFRT_C_API int ffrt_mutex_trylock(ffrt_mutex_t* mutex) 224``` 225 226**描述** 227 228尝试获取mutex。 229 230**起始版本:** 10 231 232 233**参数:** 234 235| 参数项 | 描述 | 236| -- | -- | 237| [ffrt_mutex_t](capi-ffrt-ffrt-mutex-t.md)* mutex | mutex指针。 | 238 239**返回:** 240 241| 类型 | 说明 | 242| -- | -- | 243| FFRT_C_API int | 获取mutex成功返回ffrt_success,<br> 获取mutex失败返回ffrt_error_inval或ffrt_error_busy。 | 244 245### ffrt_mutex_destroy() 246 247``` 248FFRT_C_API int ffrt_mutex_destroy(ffrt_mutex_t* mutex) 249``` 250 251**描述** 252 253销毁mutex。 254 255**起始版本:** 10 256 257 258**参数:** 259 260| 参数项 | 描述 | 261| -- | -- | 262| [ffrt_mutex_t](capi-ffrt-ffrt-mutex-t.md)* mutex | mutex指针。 | 263 264**返回:** 265 266| 类型 | 说明 | 267| -- | -- | 268| FFRT_C_API int | 销毁mutex成功返回ffrt_success,<br>销毁mutex失败返回ffrt_error_inval。 | 269 270 271