Class brsp

XWLUA类:线程栅栏对象强指针

线程栅栏对象强指针是Lua语言中的一种 userdata ,用于 强引用 XWOS的线程栅栏对象。

强引用 表示会增加XWOS的线程栅栏对象的 引用计数

MetaMethods

brsp:metatable.__copy (brsp, vm) 元方法:__copy
brsp:metatable.__gc (brsp) 元方法:__gc
brsp:metatable.__tostring (brsp) 元方法:__tostring

Methods

brsp:bind (brsp, sel, pos) 绑定线程栅栏对象到信号选择器
brsp:unbind (brsp, sel) 从信号选择器上解绑线程栅栏对象
brsp:bmp (brsp) 新建位图,位的数量与线程栅栏中的线程槽数量相等
brsp:num (brsp) 获取线程栅栏中线程槽(位)的数量
brsp:wait (brsp) 等待所有线程到达栅栏
brsp:wait_to (brsp, to) 限时等待所有线程到达栅栏


MetaMethods

brsp:metatable.__copy (brsp, vm)
元方法:__copy

将线程栅栏对象强指针拷贝到全局导出表 xwxt 中。

此元方法意味着线程栅栏对象的强引用多了一个, 引用计数1

Parameters:

  • brsp userdata (in) 线程栅栏对象强指针
  • vm userdata (in) 目标虚拟机

Usage:

    brsp = ... -- 创建线程栅栏的代码(省略)
    xwxt.somebr = brsp -- 线程栅栏对象的引用计数加1
    brsp2 = xwxt.somebr -- 线程栅栏对象的引用计数加1
    xwxt.somebr = nil -- 线程栅栏对象的引用计数减1
brsp:metatable.__gc (brsp)
元方法:__gc

线程栅栏对象强指针的垃圾回收方法。

此元方法意味着线程栅栏对象的强引用少了一个, 引用计数1

Parameters:

  • brsp userdata (in) 线程栅栏对象强指针

Usage:

    brsp = nil -- 删除引用
    collectgarbage() -- 强制垃圾回收,将调用__gc()函数
brsp:metatable.__tostring (brsp)
元方法:__tostring

将线程栅栏对象强指针格式化成字符串,可用于终端打印调试。

Parameters:

  • brsp userdata (in) 线程栅栏对象强指针

Usage:

    print(brsp)

Methods

brsp:bind (brsp, sel, pos)
绑定线程栅栏对象到信号选择器

Parameters:

  • brsp userdata (in) 线程栅栏对象强指针
  • sel userdata (in) 信号选择器对象的强指针
  • pos number (in) 线程栅栏对象映射到信号选择器位图中的位置,位置从 0 开始编号

Returns:

    number 错误码
     ● 0 没有错误
     ● -ECHRNG 位置超出范围
     ● -EALREADY 同步对象已经绑定到事件对象
     ● -EBUSY 通道已经被其他同步对象独占

Usage:

    br = xwos.br.new(32)
    -- ...省略...
    rc = br:bind(sel, 3) -- 绑定到线程栅栏的位置3
    if (rc == 0) then
      -- 绑定成功
    else
      -- 绑定失败
    end
brsp:unbind (brsp, sel)
从信号选择器上解绑线程栅栏对象

Parameters:

  • brsp userdata (in) 线程栅栏对象强指针
  • sel userdata (in) 信号选择器对象的强指针

Returns:

    number 错误码
     ● 0 没有错误
     ● -ENOTCONN 同步对象没有绑定到事件对象上

Usage:

    br:unbind(sel)
brsp:bmp (brsp)
新建位图,位的数量与线程栅栏中的线程槽数量相等

Parameters:

  • brsp userdata (in) 线程栅栏对象强指针

Returns:

    userdata 位图

Usage:

    bmp = br:bmp()
brsp:num (brsp)
获取线程栅栏中线程槽(位)的数量

Parameters:

  • brsp userdata (in) 线程栅栏对象强指针

Returns:

    number 数量

Usage:

    num = br:num()
brsp:wait (brsp)
等待所有线程到达栅栏

Parameters:

  • brsp userdata (in) 线程栅栏对象强指针

Returns:

    number 错误码
     ● 0 没有错误
     ● -EINVAL 参数错误
     ● -EINTR 等待被中断
     ● -ENOTTHDCTX 不在线程上下文中

Usage:

    br = xwos.br.new(4) -- 同步4个线程
    -- ...省略...
    rc = br:wait()
    if (rc == 0) then
      -- 线程全部到达线程栅栏
    else
      -- 错误发生
    end
brsp:wait_to (brsp, to)
限时等待所有线程到达栅栏

Parameters:

  • brsp userdata (in) 线程栅栏对象强指针
  • to number (in) 期望的阻塞等待时间

Returns:

    number 错误码
     ● 0 没有错误
     ● -EINVAL 参数错误
     ● -EINTR 等待被中断
     ● -ENOTTHDCTX 不在线程上下文中
     ● -ETIMEDOUT 超时

Usage:

    br = xwos.br.new(4) -- 同步4个线程
    -- ...省略...
    rc = br:wait_to(xwtm.ft(xwtm.s(1))) -- 最多等待1s
    if (rc == 0) then
      -- 线程全部到达线程栅栏
    elseif (rc == -116)
      -- 超时
    else
      -- 错误发生
    end
generated by LDoc 1.5.0 Last updated 2024-12-17 12:17:46