cf

2019-04-18 18:43 更新

cf 库

cf库为作者将底层实现的一些方法封装后暴露到用户层使用, 请不要随意尝试直接导入底层API进行使用.

cf库的API具体使用方法与后续产生的变更请在此进行查阅.

cf库的导入方式为: local cf = require "cf"

cf.fork(function)

创建一个由cf管理的协程, 协程会自行启动/结束/回收.(目前不支持手动停止并销毁, 如有业务需要请直接return). 此方法没有返回值.

cf.self()

返回当前上下文的协程对象.

cf.wait(cf_coroutine)

手动暂停/让出当前协程. 返回值由wakeup传递

cf.wakeup(cf_coroutine, ...)

手动唤醒指定协程. ...为传递给wait的返回值. wakeup本身没有返回值

cf.sleep(sleep_time)

将当前协程休眠sleep_time秒后继续运行. 此方法没有返回值.

cf.at(time, func)

创建一个循环定时器每time秒运行一次, 并且返回一个timer对象.
timer可以使用stop方法停止定时器, 多次停止是无害的.

cf.timeout(time, func)

创建一个定超时器且运行一次, 并且返回一个timer对象.
timer可以使用stop方法停止定时器, 多次停止是无害的.

cf.resolve(domain, version)

主动解析一个域名, version用来确认需要返回IPv6还是IPv4. 暂未实现(TODO)

关于cf封装的使用注意事项

请不要随意跨越封装层进行lua或者C的底层API引用.

请不要过于滥用定时器相关API, 请确认您是否真的有必要使用.

所有API都是同步非阻塞, 即使是定时器也同样会导致重入问题. 关于重入问题需要自行在业务层确认.

fork创建协程由cf管理, cf内部也会维护一个协程池并且管理协程的生命周期.
如果一旦您使用相关手动管理API, cf将会放弃对该协程的操作.在该协程生命周期未结束之前(return), 将不会进行内存释放. 所以, 您一旦使用相关API后需要手动唤醒或者return.cf仅在协程执行完毕/return后才会主动进行相关资源释放.

如果您真的有需要直面底层API封装私有库, 可以联系作者帮助.

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号