信号量
信号量主要用于进程间或和外部系统进行通信。
系统内置 256 个信号量,下标从 0 开始到 255。每个信号量都可以存储一个 32 位整数类型值,取值范围 -2147483648~2147483647。
系统重新启动后,所有信号量都会被重新置为 0。
设置信号量 auto_sync
- 函数名:lua模块的函数
set_signal - 参数:
- index: [int] 信号量下标
- value: [int] 待设置的信号量值
- 返回:[bool] 是否设置成功
示例程序
set_signal(1, 100)
增加信号量数值 auto_sync
- 函数名:lua模块的函数
add_signal - 参数:
- index: [int] 信号量下标
- value: [int] 待增加的信号量值
- 返回:[int] 增加后的信号量值。有可能产生溢出
示例程序
add_signal(1, 2)
print(get_signal(1))
设置多个信号量 auto_sync
- 函数名:lua模块的函数
set_signals - 参数:
- index: [int] 信号量起始下标
- values: [list[int]] 待设置的信号量值
- 返回:[bool] 是否设置成功
示例程序
set_signals(1, {1, 2, 3})
获取信号量
- 函数名:lua模块的函数
get_signal - 参数:
- index: [int] 信号量下标
- 返回:[int] 对应的信号量值
示例程序
print(get_signal(1))
获取多个信号量
- 函数名:lua模块的函数
get_signals - 参数:
- index: [int] 信号量起始下标
- len: [int] 待获取的信号量数量
- 返回:[list[int]] 信号量值数组
示例程序
values = get_signals(1, 3)
print(values)
等待信号量 auto_sync
阻塞等待信号量满足指定条件。
- 函数名:lua模块的函数
wait_signal - 参数:
- index: [int] 信号量下标
- value: [int] 待比较的值
- relation: [str] 关系判断操作符
- 返回:[bool] 是否满足条件
示例程序
wait_signal(1, 100, ">=")
示例
set_signal(1, 2147483647)
print(get_signal(1))
add_signal(1, 2)
print(get_signal(1))
兼容说明
signal_set、signal_get、signal_wait、signal_add 分别为 set_signal、get_signal、wait_signal、add_signal 的别名。
