信号量

信号量主要用于进程间或和外部系统进行通信。

系统内置 256 个信号量,下标从 0 开始到 255。每个信号量都可以存储一个 32 位整数类型值,取值范围 -2147483648~2147483647。

系统重新启动后,所有信号量都会被重新置为 0。

设置信号量

lebai:set_signal(index, value)
  • 参数
    • index 信号量下标。
    • value 待设置的信号量值。
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "set_signal", "params": [{"key": 0, "value": 0}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }

设置多个信号量

lebai:set_signals(index, values)
  • 参数
    • index 信号量下标。
    • values 待设置的信号量值。
示例程序
lebai:set_signals(1, {1,2,3})
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "set_signals", "params": [{"key": 0, "values": [1, 2, 3]}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }

获取信号量

value = lebai:get_signal(index)
  • 参数

    • index。信号量下标。
  • 返回

    • 对应的信号量值。
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "get_signal", "params": [{"key": 0}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {"value": 0}, "id": 1 }

获取多个信号量

value = lebai:get_signals(index, len)
  • 参数

    • index。信号量下标。
    • len。待获取的信号量数量。
  • 返回

    • 对应的信号量值。
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "get_signals", "params": [{"key": 0, "len": 3}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {"values": [1, 2, 3]}, "id": 1 }

增加信号量数值

lebai:add_signal(index, value)

增加指定下标的信号量值。该操作是原子的。有可能产生溢出。

  • 参数
    • index 信号量下标。
    • value 待增加的信号量值。
JSON-RPC
// 请求:
{ "jsonrpc": "2.0", "method": "add_signal", "params": [{"key": 0, "value": 0}], "id": 1 }
// 响应:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }