Module xwos.sync.cond

XWLUA模块:条件量

条件量是操作系统比较底层的同步机制,可以同时阻塞多个线程。当条件成立,条件量可以唤醒一个或所有正在等待的线程。

操作系统或语言库都提供了条件量的功能,例如:

 ● POSIX的 pthread_cond_t  ● C++的 std::condition_variable  ● Java的 java.util.concurrent.locks.Condition  ● Python的 threading.Condition  ● Rust的 std::sync::condvar

线程需要在持有 互斥锁 的情况下去等待条件量, 条件量阻塞线程时会同步释放 互斥锁 。当条件成立,线程被唤醒时,条件量会自动上锁 互斥锁 。 等待条件量发生错误时,条件量也会自动上锁 互斥锁 后再返回。

XWLUA的条件量的功能类似,主要包括以下操作:

 ● 线程 A 等待条件量的 条件成立 而阻塞;  ● 另一个线程 B 或中断上下文或其他上下文通过 单播广播 使 条件成立 ,并唤醒条件量上阻塞的线程 A 。  ● 线程 A 持有 的情况下去等待条件量,会自动解锁;  ● 线程 A 持有 的情况下去等待条件量,当等到 条件成立 时,会自动上锁;  ● 线程 A 持有 的情况下去等待条件量,当发生错误返回时, 不会 自动上锁;  ● 支持多种锁类型:   ○ 互斥锁   ○ 自旋锁   ○ 顺序锁  ● 支持没有伴生锁的情况下操作。

Functions

new () 新建条件量


Functions

new ()
新建条件量

Returns:

    userdata 新的条件量对象的强指针 condsp

Usage:

    cond = xwos.cond.new() -- 创建条件量
generated by LDoc 1.5.0 Last updated 2024-12-17 12:17:46