sysplus - sys库的强力补充
{bdg-success}已适配
{bdg-primary}Air780E
{bdg-primary}Air780EP
{bdg-primary}Air780EPS
{bdg-primary}Air780EQ
{bdg-primary}Air700EAQ
{bdg-primary}Air700EMQ
{bdg-primary}Air700ECQ
{bdg-primary}Air201
本页文档由[这个文件](https://gitee.com/openLuat/LuatOS/tree/master/luat/modules/luat_lib_sysplus_doc.c)自动生成。如有错误,请提交issue或帮忙修改后pr,谢谢!
示例
-- 本库是sys库的补充, 添加了如下内容:
-- 1. cwait机制
-- 2. 任务消息机制, 即sub/pub的增强版本
-- 在socket,libnet,http库等场景需要用到, 所以也需要require
sysplus.waitMsg(taskName, target, timeout)
等待接收一个目标消息
参数
传入值类型 | 解释 |
---|---|
string | 任务名称,用于唤醒任务的id |
string | 目标消息,如果为nil,则表示接收到任意消息都会退出 |
int | 超时时间,如果为nil,则表示无超时,永远等待 |
返回值
返回值类型 | 解释 |
---|---|
table | 成功返回table型的msg,超时返回false |
例子
-- 等待任务
sysplus.waitMsg('a', 'b', 1000)
-- 注意, 本函数会自动注册成全局函数 sys_wait
sysplus.sendMsg(taskName, target, arg2, arg3, arg4)
向目标任务发送一个消息
参数
传入值类型 | 解释 |
---|---|
string | 任务名称,用于唤醒任务的id |
any | 消息中的参数1,同时也是waitMsg里的target |
any | 消息中的参数2 |
any | 消息中的参数3 |
any | 消息中的参数4 |
返回值
返回值类型 | 解释 |
---|---|
bool | 成功返回true, 否则返回false |
例子
-- 向任务a,目标b发送消息
sysplus.sendMsg('a', 'b')
-- 注意, 本函数会自动注册成全局函数 sys_send
sysplus.taskInitEx(fun, taskName, cbFun, ...)
创建一个任务线程,在模块最末行调用该函数并注册模块中的任务函数,main.lua导入该模块即可
参数
传入值类型 | 解释 |
---|---|
function | 任务函数名,用于resume唤醒时调用 |
string | 任务名称,用于唤醒任务的id |
function | 接收到非目标消息时的回调函数 |
any | ... 任务函数fun的可变参数 |
返回值
返回值类型 | 解释 |
---|---|
number | 返回该任务的线程号 |
例子
sysplus.taskInitEx(task1,'a',callback)
sysplus.taskDel(taskName)
删除由taskInitEx创建的任务线程
参数
传入值类型 | 解释 |
---|---|
string | 任务名称,用于唤醒任务的id |
返回值
无
例子
sysplus.taskDel('a')
sysplus.cleanMsg(taskName)
清除指定task的消息队列
参数
传入值类型 | 解释 |
---|---|
string | 任务名称 |
返回值
无
例子
sysplus.cleanMsg('a')