Class splksp

XWLUA类:自旋锁对象强指针

自旋锁对象强指针是Lua语言中的一种 userdata ,用于 强引用 XWLUA的自旋锁对象。

强引用 表示会增加XWLUA的自旋锁对象的 引用计数

MetaMethods

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

Methods

splksp:lock (splksp) 上锁自旋锁
splksp:trylock (splksp) 尝试上锁自旋锁
splksp:unlock (splksp) 解锁自旋锁
splksp:get_lkst (splksp) 获取自旋锁状态


MetaMethods

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

将自旋锁对象强指针拷贝到全局导出表 xwxt 中。

此元方法意味着自旋锁对象的强引用多了一个,引用计数1

Parameters:

  • splksp userdata (in) 自旋锁对象强指针
  • vm userdata (in) 目标虚拟机

Usage:

    splksp = ... -- 创建自旋锁的代码(省略)
    xwxt.somesplk = splksp -- 自旋锁对象的引用计数加1
    splksp2 = xwxt.somesplk -- 自旋锁对象的引用计数加1
    xwxt.somesplk = nil -- 自旋锁对象的引用计数减1
splksp:metatable.__gc (splksp)
元方法:__gc

自旋锁对象强指针的垃圾回收方法。

此元方法意味着自旋锁对象的强引用少了一个, 引用计数1

如果自旋锁对象被销毁时还处于上锁状态,将自动被解锁。

Parameters:

  • splksp userdata (in) 自旋锁对象强指针

Usage:

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

自旋锁对象强指针具有 to-be-close 特性。当自旋锁对象强指针离开其作用域时,将自动解锁关联的自旋锁。

Parameters:

  • splksp userdata (in) 自旋锁对象强指针

Usage:

    mysplk = xwos.splk.new()
    function test()
      local scopelock<close> = mysplk
      scopelock:lock()
      -- 临界区
    end -- 自动解锁自旋锁
splksp:metatable.__tostring (splksp)
元方法:__tostring

将自旋锁对象强指针格式化成字符串,可用于终端打印调试。

Parameters:

  • splksp userdata (in) 自旋锁对象强指针

Usage:

    print(splksp)

Methods

splksp:lock (splksp)
上锁自旋锁

若自旋锁无法上锁,会自旋等待。

Parameters:

  • splksp userdata (in) 自旋锁对象强指针

Returns:

    number 错误码
     ● 0 没有错误
     ● -EINVAL 参数错误

Usage:

    lock = xwos.splk.new()
    lock:lock()
    -- 临界区
    lock:unlock()
splksp:trylock (splksp)
尝试上锁自旋锁

若自旋锁无法上锁,不会自旋等待。

Parameters:

  • splksp userdata (in) 自旋锁对象强指针

Returns:

    number 错误码
     ● 0 没有错误
     ● -EINVAL 参数错误
     ● -EAGAIN 尝试上锁失败

Usage:

    lock = xwos.splk.new()
    rc = lock:trylock()
    if (rc == 0) then
      -- 临界区
      lock:unlock()
    end
splksp:unlock (splksp)
解锁自旋锁

Parameters:

  • splksp userdata (in) 自旋锁对象强指针

Usage:

    lock = xwos.splk.new()
    rc = lock:trylock()
    if (rc == 0) then
      -- 临界区
      lock:unlock()
    end
splksp:get_lkst (splksp)
获取自旋锁状态

Parameters:

  • splksp userdata (in) 自旋锁对象强指针

Returns:

    number 锁状态
     ● 0 未锁定
     ● 1 锁定

Usage:

    lock = xwos.splk.new()
    rc = lock:lock()
    if (rc == 0) then
      -- 临界区
      lkst = lock:get_lkst()
      lock:unlock()
    end
generated by LDoc 1.5.0 Last updated 2024-12-17 12:17:46