codecamp

cf

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封装私有库, 可以联系作者帮助.

Crypt
System
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

API 使用手册

HTTP API

Mail API

DB API

DB

Cache API

class API

MQ API

MQ

Crypt API

cf API

cf

System API

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }