XWOS LUA API参考手册

XWLUA的扩展

多线程

原生的Lua语言不支持多线程(Lua中的类型 thread 并不是真正的线程,而是协程。),脚本中的全局变量只能由执行脚本的线程自身访问。 XWLUA在C语言层面开发了多线程的功能,每个线程都拥有一个 独立的Lua虚拟机

全局导出表

为了实现多线程共享数据,XWLUA中实现了一个 全局导出表(xwxt) ,全局导出表中的数据对所有线程可见,并且是线程安全的。 全局导出表也是Lua中的一个独立的虚拟机。

新的Metamethod:__copy

元方法 __copy() 用于将用户数据从一个虚拟机(全局导出表、线程) 深拷贝 到另一个虚拟机(线程、全局导出表)中。 只有 userdata 可以定义 __copy() 元方法。

元方法 __copy() 有两个参数,第一个参数是 数据 ,第二参数是 目的虚拟机 ,无返回值。 元方法 __copy() 运行在 保护模式 ,可以 抛出错误

实现元方法 __copy() 时,若拷贝失败,应该在 目的虚拟机 中压入一个 nil

XWLUA的对象都提供了元方法 __copy()

对象强指针

XWLUA使用 对象强指针 管理XWOS内核中的对象(线程、信号量、条件量、事件标志、信号选择器、线程栅栏、互斥锁、自旋锁、顺序锁)。 对象强指针 是一种 userdata对象强指针 就是对XWOS中的 对象描述符 的封装。 再借助于Lua虚拟机的GC机制,可实现对象的生命周期自动管理:

  • Lua虚拟机每引用一个 对象强指针 ,都会增加相关联对象的引用计数;
  • Lua虚拟机每 GC 一个 对象强指针 ,都会减少相关联对象的引用计数;
  • 当相关联对象的引用计数为 0 时,就会执行C语言层面对象的 GC 函数 。

对象强指针 的概念源于Lua语言的 强引用

返回首页

Modules

xwtm XWLUA模块:系统时间
xwvm XWLUA模块:虚拟机
xwxt XWLUA模块:全局导出表
xwos.skd XWLUA模块:调度器
xwos.thd XWLUA模块:线程
xwos.cthd XWLUA模块:当前线程
xwos.lock.mtx XWLUA模块:互斥锁
xwos.lock.splk XWLUA模块:自旋锁
xwos.lock.sqlk XWLUA模块:顺序锁
xwos.sync.sem XWLUA模块:信号量
xwos.sync.cond XWLUA模块:条件量
xwos.sync.flg XWLUA模块:事件标志
xwos.sync.br XWLUA模块:线程栅栏
xwos.sync.sel XWLUA模块:信号选择器
xwos.pm XWLUA模块:电源管理

Classes

xwlib.bmp XWLUA模块:位图
thdsp XWLUA类:线程对象强指针
mtxsp XWLUA类:互斥锁对象强指针
splksp XWLUA类:自旋锁对象强指针
sqlksp XWLUA类:顺序锁对象强指针
semsp XWLUA类:信号量对象强指针
condsp XWLUA类:条件量对象强指针
flgsp XWLUA类:事件标志对象强指针
brsp XWLUA类:线程栅栏对象强指针
selsp XWLUA类:信号选择器对象强指针
xwds.soc XWLUA模块:SOC
xwds.uart XWLUA模块:UART
xwds.i2cm XWLUA模块:I2C主机模式控制器
xwds.spim XWLUA模块:SPI主机模式控制器
generated by LDoc 1.5.0 Last updated 2024-01-12 20:06:58