1# fiber.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**库:** libffrt.z.so 15 16**系统能力:** SystemCapability.Resourceschedule.Ffrt.Core 17 18**起始版本:** 20 19 20**相关模块:** [FFRT](capi-ffrt.md) 21 22## 汇总 23 24### 函数 25 26| 名称 | 描述 | 27| -- | -- | 28| [FFRT_C_API int ffrt_fiber_init(ffrt_fiber_t* fiber, void(\*func)(void*), void* arg, void* stack, size_t stack_size)](#ffrt_fiber_init) | 纤程初始化函数,此函数初始化纤程实例,该实例可以存储上下文。 | 29| [FFRT_C_API void ffrt_fiber_switch(ffrt_fiber_t* from, ffrt_fiber_t* to)](#ffrt_fiber_switch) | 纤程切换函数,调用该函数的线程会暂停当前任务的执行,并将当前上下文保存到from纤程中,同时恢复to纤程中的上下文。 | 30 31## 函数说明 32 33### ffrt_fiber_init() 34 35``` 36FFRT_C_API int ffrt_fiber_init(ffrt_fiber_t* fiber, void(*func)(void*), void* arg, void* stack, size_t stack_size) 37``` 38 39**描述** 40 41纤程初始化函数,此函数初始化纤程实例,该实例可以存储上下文。 42 43**起始版本:** 20 44 45 46**参数:** 47 48| 参数项 | 描述 | 49| -- | -- | 50| fiber | 指向要初始化的纤程的指针, 具体可参考[ffrt_fiber_t](capi-ffrt-ffrt-fiber-t.md)。 | 51| func | 纤程切换后所要执行的方法。 | 52| void* arg | 纤程切换后所要执行方法的入参。 | 53| void* stack | 纤程堆栈内存指针。 | 54| size_t stack_size | 纤程堆栈大小, 具体可参考[ffrt_storage_size_t](capi-type-def-h.md#ffrt_storage_size_t)。 | 55 56**返回:** 57 58| 类型 | 说明 | 59| -- | -- | 60| FFRT_C_API int (ffrt_fiber_t* fiber, void(*func) | 初始化成功返回ffrt_success,否则返回ffrt_error。 | 61 62### ffrt_fiber_switch() 63 64``` 65FFRT_C_API void ffrt_fiber_switch(ffrt_fiber_t* from, ffrt_fiber_t* to) 66``` 67 68**描述** 69 70纤程切换函数,调用该函数的线程会暂停当前任务的执行,并将当前上下文保存到from纤程中,同时恢复to纤程中的上下文。 71 72**起始版本:** 20 73 74 75**参数:** 76 77| 参数项 | 描述 | 78| -- | -- | 79| [ffrt_fiber_t](capi-ffrt-ffrt-fiber-t.md)* from | 将要保存的纤程指针。 | 80| [ffrt_fiber_t](capi-ffrt-ffrt-fiber-t.md)* to | 将要恢复的纤程指针。 | 81 82 83