Class thdsp
XWLUA类:线程对象强指针
线程对象强指针是Lua语言中的一种 userdata ,用于 强引用 XWOS的线程对象。
强引用 表示会增加XWOS的线程对象的 引用计数 。
MetaMethods
| thdsp:metatable.__copy (thdsp, vm) | 元方法:__copy | 
| thdsp:metatable.__gc (thdsp) | 元方法:__gc | 
| thdsp:metatable.__tostring (thdsp) | 元方法:__tostring | 
Methods
| thdsp:intr (thdsp) | 中断线程的阻塞态和睡眠态 | 
| thdsp:quit (thdsp) | 通知线程退出 | 
| thdsp:join (thdsp) | 等待线程结束,回收线程内存资源,抛出它的返回值 | 
| thdsp:stop (thdsp) | 终止线程并等待它退出,回收线程内存资源,并抛出线程的返回值 | 
| thdsp:detach (thdsp) | 分离线程 | 
| thdsp:migrate (thdsp, cpu) | 将线程迁移到目标CPU | 
MetaMethods
- thdsp:metatable.__copy (thdsp, vm)
- 
    元方法:__copy 
将线程对象强指针拷贝到全局导出表 xwxt 中。 此元方法意味着线程对象的强引用多了一个, 引用计数 加 1 。 Parameters:- thdsp userdata (in) 线程对象强指针
- vm userdata (in) 目标虚拟机
 Usage:thdsp = ... -- 创建线程的代码(省略) xwxt.somethd = thdsp -- 线程对象的引用计数加1 thdsp2 = xwxt.somethd -- 线程对象的引用计数加1 xwxt.somethd = nil -- 线程对象的引用计数减1 
- thdsp:metatable.__gc (thdsp)
- 
    元方法:__gc 
线程对象强指针的垃圾回收方法。 此元方法意味着线程对象的强引用少了一个, 引用计数 减 1 。 Parameters:- thdsp userdata (in) 线程对象强指针
 Usage:thdsp = nil -- 删除引用 collectgarbage() -- 强制垃圾回收,将调用__gc()函数 
- thdsp:metatable.__tostring (thdsp)
- 
    元方法:__tostring 
将线程对象强指针格式化成字符串,可用于终端打印调试。 Parameters:- thdsp userdata (in) 线程对象强指针
 Usage:print(thdsp)
Methods
- thdsp:intr (thdsp)
- 
    中断线程的阻塞态和睡眠态 
● 此LuaAPI会中断线程的 阻塞状态 和 睡眠状态 。 ● 阻塞和睡眠的函数将以错误码 -EINTR(-4) 退出。 ● 如果线程的 阻塞状态 是不可被中断的,中断将不会发生。Parameters:- thdsp userdata (in) 线程对象强指针
 Returns:- 
           number
         错误码
 
 ● 0 没有错误Usage:rc = thdsp:intr()
- thdsp:quit (thdsp)
- 
    通知线程退出 
此方法用于线程 A 向另一个线程 B 设置 退出 状态。 
 ● 线程 B 是否要退出,什么时候退出,由线程 B 自己决定;
 ● 调用此方法的线程 A 也不会等待子线程退出;
 ● 线程 B 可以是 Joinable 的,也可以是 Detached 的;
 ● 此方法可被重复调用,线程 B 的 退出 状态一旦被设置,不可被清除。Parameters:- thdsp userdata (in) 线程对象强指针
 Returns:- 
           number
         错误码
 
 ● 0 没有错误Usage:rc = thdsp:quit()
- thdsp:join (thdsp)
- 
    等待线程结束,回收线程内存资源,抛出它的返回值 
此方法类似于POSIX线程库的 pthread_join(),用于等待另一个线程退出。 线程 A 调用此方法时,会阻塞等待线程 B 退出。线程 B 退出后,会释放线程 B 的内存资源,然后抛出线程 B 的返回值。此方法只能对 Joinable 的线程 B 使用。 Parameters:- thdsp userdata (in) 线程对象强指针
 Returns:- 
           number
         错误码
 ● 0 没有错误
 ● -EINVAL 线程不是 Joinable 的
- number 子线程抛出的返回值
 Usage:rc, childrc = thdsp:join()
- thdsp:stop (thdsp)
- 
    终止线程并等待它退出,回收线程内存资源,并抛出线程的返回值 
此方法用于线程 A 停止另一个线程 B ,并等待线程 B 结束。 
 ● 此方法只能对 Joinable 的线程 B 使用。
 ● 线程 A 调用此方法时,会对线程 B 设置一个 退出 状态,然后一直阻塞等待线程 B 退出。
 ● 线程 B 是否要退出,什么时候退出,由线程 B 自己决定。
 ● 当线程 B 退出后,此方法会释放线程 B 的内存资源,然后抛出线程 B 的返回值。
 ● 此方法等价于 thdsp:quit() + thdsp:join() 的组合。Parameters:- thdsp userdata (in) 线程对象强指针
 Returns:- 
           number
         错误码
 ● 0 没有错误
 ● -EINVAL 线程不是Joinable的
- number 子线程抛出的返回值
 Usage:rc, childrc = thdsp:stop()
- thdsp:detach (thdsp)
- 
    分离线程 
此方法功能类似于 pthread_detach(),将线程设置为 分离态 。 处于 分离态 的线程退出后,系统将自动回收其内存资源。Parameters:- thdsp userdata (in) 线程对象强指针
 Returns:- 
           number
         错误码
 
 ● 0 没有错误Usage:rc = thdsp:detach()
- thdsp:migrate (thdsp, cpu)
- 
    将线程迁移到目标CPU 
此方法在多核系统中,用于将线程迁移到另一个CPU上。 Parameters:- thdsp userdata (in) 线程对象强指针
- cpu number (in) 目标CPU的ID
 Returns:- 
           number
         错误码
 
 ● 0 没有错误
 ● -ENODEV CPU序号不存在Usage:rc = thdsp:migrate(cpu)