• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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