1# shared_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声明rwlock的C接口。 13 14**引用文件:** <ffrt/shared_mutex.h> 15 16**库:** libffrt.z.so 17 18**系统能力:** SystemCapability.Resourceschedule.Ffrt.Core 19 20**起始版本:** 18 21 22**相关模块:** [FFRT](capi-ffrt.md) 23 24## 汇总 25 26### 函数 27 28| 名称 | 描述 | 29| -- | -- | 30| [FFRT_C_API int ffrt_rwlock_init(ffrt_rwlock_t* rwlock, const ffrt_rwlockattr_t* attr)](#ffrt_rwlock_init) | 初始化rwlock。 | 31| [FFRT_C_API int ffrt_rwlock_wrlock(ffrt_rwlock_t* rwlock)](#ffrt_rwlock_wrlock) | 获取写锁。 | 32| [FFRT_C_API int ffrt_rwlock_trywrlock(ffrt_rwlock_t* rwlock)](#ffrt_rwlock_trywrlock) | 尝试获取写锁。 | 33| [FFRT_C_API int ffrt_rwlock_rdlock(ffrt_rwlock_t* rwlock)](#ffrt_rwlock_rdlock) | 获取读锁。 | 34| [FFRT_C_API int ffrt_rwlock_tryrdlock(ffrt_rwlock_t* rwlock)](#ffrt_rwlock_tryrdlock) | 尝试获取读锁。 | 35| [FFRT_C_API int ffrt_rwlock_unlock(ffrt_rwlock_t* rwlock)](#ffrt_rwlock_unlock) | 释放rwlock。 | 36| [FFRT_C_API int ffrt_rwlock_destroy(ffrt_rwlock_t* rwlock)](#ffrt_rwlock_destroy) | 销毁rwlock。 | 37 38## 函数说明 39 40### ffrt_rwlock_init() 41 42``` 43FFRT_C_API int ffrt_rwlock_init(ffrt_rwlock_t* rwlock, const ffrt_rwlockattr_t* attr) 44``` 45 46**描述** 47 48初始化rwlock。 49 50**起始版本:** 18 51 52 53**参数:** 54 55| 参数项 | 描述 | 56| -- | -- | 57| [ffrt_rwlock_t](capi-ffrt-ffrt-rwlock-t.md)* rwlock | rwlock指针。 | 58| [const ffrt_rwlockattr_t](capi-ffrt-ffrt-rwlockattr-t.md)* attr | rwlock属性指针。 | 59 60**返回:** 61 62| 类型 | 说明 | 63| -- | -- | 64| FFRT_C_API int | `rwlock`不为空,且`attr`为空则初始化成功,返回ffrt_success,<br> 反之初始化rwlock失败,返回ffrt_error_inval。 | 65 66### ffrt_rwlock_wrlock() 67 68``` 69FFRT_C_API int ffrt_rwlock_wrlock(ffrt_rwlock_t* rwlock) 70``` 71 72**描述** 73 74获取写锁。 75 76**起始版本:** 18 77 78 79**参数:** 80 81| 参数项 | 描述 | 82| -- | -- | 83| [ffrt_rwlock_t](capi-ffrt-ffrt-rwlock-t.md)* rwlock | rwlock指针。 | 84 85**返回:** 86 87| 类型 | 说明 | 88| -- | -- | 89| FFRT_C_API int | 获取写锁成功返回ffrt_success,<br> 获取写锁失败返回ffrt_error_inval或者阻塞当前任务。 | 90 91### ffrt_rwlock_trywrlock() 92 93``` 94FFRT_C_API int ffrt_rwlock_trywrlock(ffrt_rwlock_t* rwlock) 95``` 96 97**描述** 98 99尝试获取写锁。 100 101**起始版本:** 18 102 103 104**参数:** 105 106| 参数项 | 描述 | 107| -- | -- | 108| [ffrt_rwlock_t](capi-ffrt-ffrt-rwlock-t.md)* rwlock | rwlock指针。 | 109 110**返回:** 111 112| 类型 | 说明 | 113| -- | -- | 114| FFRT_C_API int | 获取写锁成功返回ffrt_success,<br> 获取写锁失败返回ffrt_error_inval或ffrt_error_busy。 | 115 116### ffrt_rwlock_rdlock() 117 118``` 119FFRT_C_API int ffrt_rwlock_rdlock(ffrt_rwlock_t* rwlock) 120``` 121 122**描述** 123 124获取读锁。 125 126**起始版本:** 18 127 128 129**参数:** 130 131| 参数项 | 描述 | 132| -- | -- | 133| [ffrt_rwlock_t](capi-ffrt-ffrt-rwlock-t.md)* rwlock | rwlock指针。 | 134 135**返回:** 136 137| 类型 | 说明 | 138| -- | -- | 139| FFRT_C_API int | 获取读锁成功返回ffrt_success,<br> 获取读锁失败返回ffrt_error_inval或者阻塞当前任务。 | 140 141### ffrt_rwlock_tryrdlock() 142 143``` 144FFRT_C_API int ffrt_rwlock_tryrdlock(ffrt_rwlock_t* rwlock) 145``` 146 147**描述** 148 149尝试获取读锁。 150 151**起始版本:** 18 152 153 154**参数:** 155 156| 参数项 | 描述 | 157| -- | -- | 158| [ffrt_rwlock_t](capi-ffrt-ffrt-rwlock-t.md)* rwlock | rwlock指针。 | 159 160**返回:** 161 162| 类型 | 说明 | 163| -- | -- | 164| FFRT_C_API int | 获取读锁成功返回ffrt_success,<br> 获取读锁失败返回ffrt_error_inval或ffrt_error_busy。 | 165 166### ffrt_rwlock_unlock() 167 168``` 169FFRT_C_API int ffrt_rwlock_unlock(ffrt_rwlock_t* rwlock) 170``` 171 172**描述** 173 174释放rwlock。 175 176**起始版本:** 18 177 178 179**参数:** 180 181| 参数项 | 描述 | 182| -- | -- | 183| [ffrt_rwlock_t](capi-ffrt-ffrt-rwlock-t.md)* rwlock | rwlock指针。 | 184 185**返回:** 186 187| 类型 | 说明 | 188| -- | -- | 189| FFRT_C_API int | 释放rwlock成功返回ffrt_success,<br> 释放rwlock失败返回ffrt_error_inval。 | 190 191### ffrt_rwlock_destroy() 192 193``` 194FFRT_C_API int ffrt_rwlock_destroy(ffrt_rwlock_t* rwlock) 195``` 196 197**描述** 198 199销毁rwlock。 200 201**起始版本:** 18 202 203 204**参数:** 205 206| 参数项 | 描述 | 207| -- | -- | 208| [ffrt_rwlock_t](capi-ffrt-ffrt-rwlock-t.md)* rwlock | rwlock指针。 | 209 210**返回:** 211 212| 类型 | 说明 | 213| -- | -- | 214| FFRT_C_API int | 销毁rwlock成功返回ffrt_success,<br>销毁rwlock失败返回ffrt_error_inval。 | 215 216 217