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