# fiber 库模块帮助文档

## fiber 成员列表 <a id="fiber" href="#fiber">&#x23;</a>

### fiber.create <a id="fiber.create" href="#fiber.create">&#x23;</a>
创建纤程，可调用 fiber.resume 函数启动纤程。

### fiber.create(函数对象,应用程序基准目录) <a id="fiber.create" href="#fiber.create">&#x23;</a>
- 参数 @1 指定执行函数。  
请注意如果执行函数创建窗体后又抛出异常，可能导致报错`cannot resume fiber`。  
这是因为纤程已停止，而窗体仍然有可能调用纤程内创建的窗口消息回调函数。  

  避免此问题的几种方法：  
  1. 在纤程内创建独立线程以运行窗口界面，例如用 thread.invokeAndWait 启动执行函数。  
  2. 在纤程内使用 call 函数调用执行函数并捕获异常。  
  3. 避免在纤程内创建窗口界面  
- 参数 @2 为可选参数,应用程序基准目录只能设置为硬盘上实际存在的目录,  
改变应用程序基准目录,会同时改变用户库目录

### fiber.current() <a id="fiber.current" href="#fiber.current">&#x23;</a>
返回当前正在运行的纤程  
非纤程内调用则返回null

### fiber.generator( 生成器,... ) <a id="fiber.generator" href="#fiber.generator">&#x23;</a>

```aardio
for v in fiber.generator(/*使用纤程创建迭代器。  
参数 @1 指定纤程函数，可添加任意个纤程启动参数。  
纤程函数内使用 fiber.yield 返回迭代值。*/,){  

}
```

### fiber.resume(纤程对象,启动参数...) <a id="fiber.resume" href="#fiber.resume">&#x23;</a>
继续运行纤程。  
除参数 @1 以外的其他参数为首次启动纤程函数的调用参数。  

成功运行纤程则返回 true 以及纤程内调用 fiber.yield 函数时传入的参数。  
错误则返回 false 以及错误信息.

### fiber.status(纤程) <a id="fiber.status" href="#fiber.status">&#x23;</a>
获取纤程状态

### fiber.yield(一个或多个返回值) <a id="fiber.yield" href="#fiber.yield">&#x23;</a>
暂停纤程,  
此函数传入参数将会作为fiber.resume()的返回值。  
下次调用fiber.resume()的参数即为本次调用的返回值。

## fiber.status 成员列表 <a id="fiber.status" href="#fiber.status">&#x23;</a>

### fiber.status.current <a id="fiber.status.current" href="#fiber.status.current">&#x23;</a>
当前正在运行的纤程

### fiber.status.dead <a id="fiber.status.dead" href="#fiber.status.dead">&#x23;</a>
纤程已完成或已出错

### fiber.status.running <a id="fiber.status.running" href="#fiber.status.running">&#x23;</a>
正在调用其他纤程

### fiber.status.suspended <a id="fiber.status.suspended" href="#fiber.status.suspended">&#x23;</a>
等待中
