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()