• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# task.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**引用文件:** <ffrt/task.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_task_attr_init(ffrt_task_attr_t* attr)](#ffrt_task_attr_init) | 初始化任务属性。 |
31| [FFRT_C_API void ffrt_task_attr_set_name(ffrt_task_attr_t* attr, const char* name)](#ffrt_task_attr_set_name) | 设置任务名字。 |
32| [FFRT_C_API const char* ffrt_task_attr_get_name(const ffrt_task_attr_t* attr)](#ffrt_task_attr_get_name) | 获取任务名字。 |
33| [FFRT_C_API void ffrt_task_attr_destroy(ffrt_task_attr_t* attr)](#ffrt_task_attr_destroy) | 销毁任务属性。 |
34| [FFRT_C_API void ffrt_task_attr_set_qos(ffrt_task_attr_t* attr, ffrt_qos_t qos)](#ffrt_task_attr_set_qos) | 设置任务QoS。 |
35| [FFRT_C_API ffrt_qos_t ffrt_task_attr_get_qos(const ffrt_task_attr_t* attr)](#ffrt_task_attr_get_qos) | 获取任务QoS。 |
36| [FFRT_C_API void ffrt_task_attr_set_delay(ffrt_task_attr_t* attr, uint64_t delay_us)](#ffrt_task_attr_set_delay) | 设置任务延迟时间。 |
37| [FFRT_C_API uint64_t ffrt_task_attr_get_delay(const ffrt_task_attr_t* attr)](#ffrt_task_attr_get_delay) | 获取任务延迟时间。 |
38| [FFRT_C_API void ffrt_task_attr_set_queue_priority(ffrt_task_attr_t* attr, ffrt_queue_priority_t priority)](#ffrt_task_attr_set_queue_priority) | 设置并行队列任务优先级。 |
39| [FFRT_C_API ffrt_queue_priority_t ffrt_task_attr_get_queue_priority(const ffrt_task_attr_t* attr)](#ffrt_task_attr_get_queue_priority) | 获取并行队列任务优先级。 |
40| [FFRT_C_API void ffrt_task_attr_set_stack_size(ffrt_task_attr_t* attr, uint64_t size)](#ffrt_task_attr_set_stack_size) | 设置任务栈大小。 |
41| [FFRT_C_API uint64_t ffrt_task_attr_get_stack_size(const ffrt_task_attr_t* attr)](#ffrt_task_attr_get_stack_size) | 获取任务栈大小。 |
42| [FFRT_C_API int ffrt_this_task_update_qos(ffrt_qos_t qos)](#ffrt_this_task_update_qos) | 更新任务QoS。 |
43| [FFRT_C_API ffrt_qos_t ffrt_this_task_get_qos(void)](#ffrt_this_task_get_qos) | 获取任务QoS。 |
44| [FFRT_C_API uint64_t ffrt_this_task_get_id(void)](#ffrt_this_task_get_id) | 获取任务id。 |
45| [FFRT_C_API void *ffrt_alloc_auto_managed_function_storage_base(ffrt_function_kind_t kind)](#ffrt_alloc_auto_managed_function_storage_base) | 申请函数执行结构的内存。 |
46| [FFRT_C_API void ffrt_submit_base(ffrt_function_header_t* f, const ffrt_deps_t* in_deps, const ffrt_deps_t* out_deps,const ffrt_task_attr_t* attr)](#ffrt_submit_base) | 提交任务调度执行。 |
47| [FFRT_C_API ffrt_task_handle_t ffrt_submit_h_base(ffrt_function_header_t* f, const ffrt_deps_t* in_deps,const ffrt_deps_t* out_deps, const ffrt_task_attr_t* attr)](#ffrt_submit_h_base) | 提交任务调度执行并返回任务句柄。 |
48| [FFRT_C_API void ffrt_submit_f(ffrt_function_t func, void* arg, const ffrt_deps_t* in_deps, const ffrt_deps_t* out_deps,const ffrt_task_attr_t* attr)](#ffrt_submit_f) | 提交任务调度执行,是ffrt_submit_base接口的简化包装形式。该接口假定任务不需要销毁回调函数,给定的任务函数和参数被包装为通用任务结构,并将封装后的任务结构和其他参数传递给ffrt_submit_base接口。 |
49| [FFRT_C_API ffrt_task_handle_t ffrt_submit_h_f(ffrt_function_t func, void* arg, const ffrt_deps_t* in_deps,const ffrt_deps_t* out_deps, const ffrt_task_attr_t* attr)](#ffrt_submit_h_f) | 提交任务调度执行并返回任务句柄,是ffrt_submit_h_base接口的简化包装形式。该接口假定任务不需要销毁回调函数,给定的任务函数和参数被包装为通用任务结构,并将封装后的任务结构和其他参数传递给ffrt_submit_h_base接口。 |
50| [FFRT_C_API uint32_t ffrt_task_handle_inc_ref(ffrt_task_handle_t handle)](#ffrt_task_handle_inc_ref) | 增加任务句柄的引用数。 |
51| [FFRT_C_API uint32_t ffrt_task_handle_dec_ref(ffrt_task_handle_t handle)](#ffrt_task_handle_dec_ref) | 减少任务句柄的引用计数。 |
52| [FFRT_C_API void ffrt_task_handle_destroy(ffrt_task_handle_t handle)](#ffrt_task_handle_destroy) | 销毁任务句柄。 |
53| [FFRT_C_API void ffrt_wait_deps(const ffrt_deps_t* deps)](#ffrt_wait_deps) | 等待依赖的任务完成,当前任务开始执行。 |
54| [FFRT_C_API void ffrt_wait(void)](#ffrt_wait) | 等待之前所有提交任务完成,当前任务开始执行。 |
55
56## 函数说明
57
58### ffrt_task_attr_init()
59
60```
61FFRT_C_API int ffrt_task_attr_init(ffrt_task_attr_t* attr)
62```
63
64**描述**
65
66初始化任务属性。
67
68**起始版本:** 10
69
70
71**参数:**
72
73| 参数项 | 描述 |
74| -- | -- |
75| [ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
76
77**返回:**
78
79| 类型 | 说明 |
80| -- | -- |
81| FFRT_C_API int | 初始化任务属性成功返回0,<br>          初始化任务属性失败返回-1。 |
82
83### ffrt_task_attr_set_name()
84
85```
86FFRT_C_API void ffrt_task_attr_set_name(ffrt_task_attr_t* attr, const char* name)
87```
88
89**描述**
90
91设置任务名字。
92
93**起始版本:** 10
94
95
96**参数:**
97
98| 参数项 | 描述 |
99| -- | -- |
100| [ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
101| const char* name | 任务名字。 |
102
103### ffrt_task_attr_get_name()
104
105```
106FFRT_C_API const char* ffrt_task_attr_get_name(const ffrt_task_attr_t* attr)
107```
108
109**描述**
110
111获取任务名字。
112
113**起始版本:** 10
114
115
116**参数:**
117
118| 参数项 | 描述 |
119| -- | -- |
120| [const ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
121
122**返回:**
123
124| 类型 | 说明 |
125| -- | -- |
126| FFRT_C_API const char* | 获取任务名字成功返回非空指针,<br>          获取任务名字失败返回空指针。 |
127
128### ffrt_task_attr_destroy()
129
130```
131FFRT_C_API void ffrt_task_attr_destroy(ffrt_task_attr_t* attr)
132```
133
134**描述**
135
136销毁任务属性。
137
138**起始版本:** 10
139
140
141**参数:**
142
143| 参数项 | 描述 |
144| -- | -- |
145| [ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
146
147### ffrt_task_attr_set_qos()
148
149```
150FFRT_C_API void ffrt_task_attr_set_qos(ffrt_task_attr_t* attr, ffrt_qos_t qos)
151```
152
153**描述**
154
155设置任务QoS。
156
157**起始版本:** 10
158
159
160**参数:**
161
162| 参数项 | 描述 |
163| -- | -- |
164| [ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
165| [ffrt_qos_t](capi-type-def-h.md#变量) qos                 | 任务QoS。 |
166
167### ffrt_task_attr_get_qos()
168
169```
170FFRT_C_API ffrt_qos_t ffrt_task_attr_get_qos(const ffrt_task_attr_t* attr)
171```
172
173**描述**
174
175获取任务QoS。
176
177**起始版本:** 10
178
179
180**参数:**
181
182| 参数项 | 描述 |
183| -- | -- |
184| [const ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
185
186**返回:**
187
188| 类型 | 说明 |
189| -- | -- |
190| FFRT_C_API [ffrt_qos_t](capi-type-def-h.md#变量) | 返回任务的QoS,默认返回ffrt_qos_default。 |
191
192### ffrt_task_attr_set_delay()
193
194```
195FFRT_C_API void ffrt_task_attr_set_delay(ffrt_task_attr_t* attr, uint64_t delay_us)
196```
197
198**描述**
199
200设置任务延迟时间。
201
202**起始版本:** 10
203
204
205**参数:**
206
207| 参数项 | 描述 |
208| -- | -- |
209| [ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
210| uint64_t delay_us | 任务延迟时间,单位微秒。 |
211
212### ffrt_task_attr_get_delay()
213
214```
215FFRT_C_API uint64_t ffrt_task_attr_get_delay(const ffrt_task_attr_t* attr)
216```
217
218**描述**
219
220获取任务延迟时间。
221
222**起始版本:** 10
223
224
225**参数:**
226
227| 参数项 | 描述 |
228| -- | -- |
229| [const ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
230
231**返回:**
232
233| 类型 | 说明 |
234| -- | -- |
235| FFRT_C_API uint64_t | 返回任务的延迟时间。 |
236
237### ffrt_task_attr_set_queue_priority()
238
239```
240FFRT_C_API void ffrt_task_attr_set_queue_priority(ffrt_task_attr_t* attr, ffrt_queue_priority_t priority)
241```
242
243**描述**
244
245设置并行队列任务优先级。
246
247**起始版本:** 12
248
249
250**参数:**
251
252| 参数项 | 描述 |
253| -- | -- |
254| [ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
255| [ffrt_queue_priority_t](capi-type-def-h.md#ffrt_queue_priority_t) priority | 任务优先级。 |
256
257### ffrt_task_attr_get_queue_priority()
258
259```
260FFRT_C_API ffrt_queue_priority_t ffrt_task_attr_get_queue_priority(const ffrt_task_attr_t* attr)
261```
262
263**描述**
264
265获取并行队列任务优先级。
266
267**起始版本:** 12
268
269
270**参数:**
271
272| 参数项 | 描述 |
273| -- | -- |
274| [const ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
275
276**返回:**
277
278| 类型 | 说明 |
279| -- | -- |
280| FFRT_C_API [ffrt_queue_priority_t](capi-type-def-h.md#ffrt_queue_priority_t) | 返回任务优先级。 |
281
282### ffrt_task_attr_set_stack_size()
283
284```
285FFRT_C_API void ffrt_task_attr_set_stack_size(ffrt_task_attr_t* attr, uint64_t size)
286```
287
288**描述**
289
290设置任务栈大小。
291
292**起始版本:** 12
293
294
295**参数:**
296
297| 参数项 | 描述 |
298| -- | -- |
299| [ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
300| uint64_t size | 任务栈大小,单位是字节。 |
301
302### ffrt_task_attr_get_stack_size()
303
304```
305FFRT_C_API uint64_t ffrt_task_attr_get_stack_size(const ffrt_task_attr_t* attr)
306```
307
308**描述**
309
310获取任务栈大小。
311
312**起始版本:** 12
313
314
315**参数:**
316
317| 参数项 | 描述 |
318| -- | -- |
319| [const ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性指针。 |
320
321**返回:**
322
323| 类型 | 说明 |
324| -- | -- |
325| FFRT_C_API uint64_t | 返回任务栈大小,单位是字节。 |
326
327### ffrt_this_task_update_qos()
328
329```
330FFRT_C_API int ffrt_this_task_update_qos(ffrt_qos_t qos)
331```
332
333**描述**
334
335更新任务QoS。
336
337**起始版本:** 10
338
339
340**参数:**
341
342| 参数项 | 描述 |
343| -- | -- |
344| [ffrt_qos_t](capi-type-def-h.md#变量) qos | 当前任务待更新的QoS。 |
345
346**返回:**
347
348| 类型 | 说明 |
349| -- | -- |
350| FFRT_C_API int | 更新任务QoS成功返回0,<br>          更新任务QoS失败返回-1。 |
351
352### ffrt_this_task_get_qos()
353
354```
355FFRT_C_API ffrt_qos_t ffrt_this_task_get_qos(void)
356```
357
358**描述**
359
360获取任务QoS。
361
362**起始版本:** 12
363
364**返回:**
365
366| 类型 | 说明 |
367| -- | -- |
368| FFRT_C_API [ffrt_qos_t](capi-type-def-h.md#变量) | 返回任务QoS。 |
369
370### ffrt_this_task_get_id()
371
372```
373FFRT_C_API uint64_t ffrt_this_task_get_id(void)
374```
375
376**描述**
377
378获取任务id。
379
380**起始版本:** 10
381
382**返回:**
383
384| 类型 | 说明 |
385| -- | -- |
386| FFRT_C_API uint64_t | 返回当前任务的id。 |
387
388### ffrt_alloc_auto_managed_function_storage_base()
389
390```
391FFRT_C_API void *ffrt_alloc_auto_managed_function_storage_base(ffrt_function_kind_t kind)
392```
393
394**描述**
395
396申请函数执行结构的内存。
397
398**起始版本:** 10
399
400
401**参数:**
402
403| 参数项 | 描述 |
404| -- | -- |
405| [ffrt_function_kind_t](capi-type-def-h.md#ffrt_function_kind_t) kind | 函数执行结构类型,支持通用和队列函数执行结构类型。 |
406
407**返回:**
408
409| 类型 | 说明 |
410| -- | -- |
411| FFRT_C_API void * | 申请函数执行结构成功返回非空指针,<br>          申请函数执行结构失败返回空指针。 |
412
413### ffrt_submit_base()
414
415```
416FFRT_C_API void ffrt_submit_base(ffrt_function_header_t* f, const ffrt_deps_t* in_deps, const ffrt_deps_t* out_deps,const ffrt_task_attr_t* attr)
417```
418
419**描述**
420
421提交任务调度执行。
422
423**起始版本:** 10
424
425
426**参数:**
427
428| 参数项 | 描述 |
429| -- | -- |
430| [ffrt_function_header_t](capi-ffrt-ffrt-function-header-t.md)* f | 任务执行体封装的指针。 |
431| [const ffrt_deps_t](capi-ffrt-ffrt-deps-t.md)* in_deps | 输入依赖指针。 |
432| [const ffrt_deps_t](capi-ffrt-ffrt-deps-t.md)* out_deps | 输出依赖指针。 |
433| [const ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性。 |
434
435### ffrt_submit_h_base()
436
437```
438FFRT_C_API ffrt_task_handle_t ffrt_submit_h_base(ffrt_function_header_t* f, const ffrt_deps_t* in_deps,const ffrt_deps_t* out_deps, const ffrt_task_attr_t* attr)
439```
440
441**描述**
442
443提交任务调度执行并返回任务句柄。
444
445**起始版本:** 10
446
447
448**参数:**
449
450| 参数项 | 描述 |
451| -- | -- |
452| [ffrt_function_header_t](capi-ffrt-ffrt-function-header-t.md)* f | 任务执行体封装的指针。 |
453| [const ffrt_deps_t](capi-ffrt-ffrt-deps-t.md)* in_deps | 输入依赖指针。 |
454| [const ffrt_deps_t](capi-ffrt-ffrt-deps-t.md)* out_deps | 输出依赖指针。 |
455| [const ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性。 |
456
457**返回:**
458
459| 类型 | 说明 |
460| -- | -- |
461| FFRT_C_API [ffrt_task_handle_t](capi-ffrt-ffrt-task-handle-t.md) | 提交任务成功返回非空任务句柄,<br>          提交任务失败返回空指针。 |
462
463### ffrt_submit_f()
464
465```
466FFRT_C_API void ffrt_submit_f(ffrt_function_t func, void* arg, const ffrt_deps_t* in_deps, const ffrt_deps_t* out_deps,const ffrt_task_attr_t* attr)
467```
468
469**描述**
470
471提交任务调度执行,是ffrt_submit_base接口的简化包装形式。该接口假定任务不需要销毁回调函数,给定的任务函数和参数被包装为通用任务结构,并将封装后的任务结构和其他参数传递给ffrt_submit_base接口。
472
473**起始版本:** 20
474
475
476**参数:**
477
478| 参数项 | 描述 |
479| -- | -- |
480| [ffrt_function_t](capi-type-def-h.md#ffrt_function_t) func | 指定的任务函数。 |
481| void* arg | 传递给任务函数的参数。 |
482| [const ffrt_deps_t](capi-ffrt-ffrt-deps-t.md)* in_deps | 输入依赖指针。 |
483| [const ffrt_deps_t](capi-ffrt-ffrt-deps-t.md)* out_deps | 输出依赖指针。 |
484| [const ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性。 |
485
486**参考:**
487
488[ffrt_submit_base](capi-task-h.md#ffrt_submit_base)
489
490
491### ffrt_submit_h_f()
492
493```
494FFRT_C_API ffrt_task_handle_t ffrt_submit_h_f(ffrt_function_t func, void* arg, const ffrt_deps_t* in_deps,const ffrt_deps_t* out_deps, const ffrt_task_attr_t* attr)
495```
496
497**描述**
498
499提交任务调度执行并返回任务句柄,是ffrt_submit_h_base接口的简化包装形式。该接口假定任务不需要销毁回调函数,给定的任务函数和参数被包装为通用任务结构,并将封装后的任务结构和其他参数传递给ffrt_submit_h_base接口。
500
501**起始版本:** 20
502
503
504**参数:**
505
506| 参数项 | 描述 |
507| -- | -- |
508| [ffrt_function_t](capi-type-def-h.md#ffrt_function_t) func | 指定的任务函数。 |
509| void* arg | 传递给任务函数的参数。 |
510| [const ffrt_deps_t](capi-ffrt-ffrt-deps-t.md)* in_deps | 输入依赖指针。 |
511| [const ffrt_deps_t](capi-ffrt-ffrt-deps-t.md)* out_deps | 输出依赖指针。 |
512| [const ffrt_task_attr_t](capi-ffrt-ffrt-task-attr-t.md)* attr | 任务属性。 |
513
514**返回:**
515
516| 类型 | 说明 |
517| -- | -- |
518| FFRT_C_API [ffrt_task_handle_t](capi-ffrt-ffrt-task-handle-t.md) | 提交任务成功返回非空任务句柄,<br>          提交任务失败返回空指针。 |
519
520**参考:**
521
522[ffrt_submit_h_base](capi-task-h.md#ffrt_submit_h_base)
523
524
525### ffrt_task_handle_inc_ref()
526
527```
528FFRT_C_API uint32_t ffrt_task_handle_inc_ref(ffrt_task_handle_t handle)
529```
530
531**描述**
532
533增加任务句柄的引用数。
534
535**起始版本:** 12
536
537
538**参数:**
539
540| 参数项 | 描述 |
541| -- | -- |
542| [ffrt_task_handle_t](capi-ffrt-ffrt-task-handle-t.md) handle | 任务句柄。 |
543
544**返回:**
545
546| 类型 | 说明 |
547| -- | -- |
548| FFRT_C_API uint32_t | 返回任务句柄原始引用计数。 |
549
550### ffrt_task_handle_dec_ref()
551
552```
553FFRT_C_API uint32_t ffrt_task_handle_dec_ref(ffrt_task_handle_t handle)
554```
555
556**描述**
557
558减少任务句柄的引用计数。
559
560**起始版本:** 12
561
562
563**参数:**
564
565| 参数项 | 描述 |
566| -- | -- |
567| [ffrt_task_handle_t](capi-ffrt-ffrt-task-handle-t.md) handle | 任务句柄。 |
568
569**返回:**
570
571| 类型 | 说明 |
572| -- | -- |
573| FFRT_C_API uint32_t | 返回任务句柄原始引用计数。 |
574
575### ffrt_task_handle_destroy()
576
577```
578FFRT_C_API void ffrt_task_handle_destroy(ffrt_task_handle_t handle)
579```
580
581**描述**
582
583销毁任务句柄。
584
585**起始版本:** 10
586
587
588**参数:**
589
590| 参数项 | 描述 |
591| -- | -- |
592| [ffrt_task_handle_t](capi-ffrt-ffrt-task-handle-t.md) handle | 任务句柄。 |
593
594### ffrt_wait_deps()
595
596```
597FFRT_C_API void ffrt_wait_deps(const ffrt_deps_t* deps)
598```
599
600**描述**
601
602等待依赖的任务完成,当前任务开始执行。
603
604**起始版本:** 10
605
606
607**参数:**
608
609| 参数项 | 描述 |
610| -- | -- |
611| [const ffrt_deps_t](capi-ffrt-ffrt-deps-t.md)* deps | 依赖的指针。 |
612
613### ffrt_wait()
614
615```
616FFRT_C_API void ffrt_wait(void)
617```
618
619**描述**
620
621等待之前所有提交任务完成,当前任务开始执行。
622
623**起始版本:** 10
624
625
626