Module xwos.lock.splk

XWLUA模块:自旋锁

自旋锁是多核系统中为防止多个处理器同时访问公共的内存区域(称为临界区)而引入的一种锁。 当一个CPU获得自旋锁并访问临界区时,其他CPU只能 自旋 等待锁。 所谓 自旋 ,是指不断循环测试 是否已经解开。

自旋锁只是为SMP的场景设计的一种锁机制。在单核(UP)系统中,并不需要自旋锁。 但为了软件接口的统一,实现了虚假的自旋锁,只是对关闭抢占、中断底半部或中断的封装。

自旋锁还伴随其他操作:内存屏障,关闭调度器的抢占,关闭中断底半部,关闭中断等。

to-be-closed 特性

to-be-closed 特性是 Lua-5.4 新引入的特性。拥有 to-be-closed 特性的变量,在离开其作用域时,会自动被 关闭关闭 的行为是由元方法 __close() 来定义的。

XWLUA的自旋锁对象强指针具有 to-be-closed 特性,并提供了 Scope Lock 模式 。 当自旋锁对象强指针离开作用域时,会自动解锁关联的自旋锁。

不可重入锁

XWLUA的自旋锁是 不可重入 锁,不可重复上锁。

Functions

new () 新建一个自旋锁


Functions

new ()
新建一个自旋锁

Returns:

    userdata 新的自旋锁对象的强指针 splksp

Usage:

    mysplk = xwos.splk.new()
generated by LDoc 1.5.0 Last updated 2024-12-17 12:17:46