跳到主要内容

执行进程词典事务代码 (proc_dict_run)

声明​

返回内容, 错误信息 = proc_dict_run(事务代码)

参数​

  • 事务代码 字符串型,需要执行的事务 Lua 代码

返回值​

  • 返回内容 字符串型 | nil,执行成功返回代码返回的值,执行失败返回 nil
  • 错误信息 文本型 | nil,执行成功返回 nil,执行代码发生错误时返回错误信息

说明​

这个函数在 20250427 以后的版本方可使用

所有以 "nbtouch." 开头的进程队列词典全部被保留

执行进程词典事务代码,事务代码执行期间,将阻止其它线程访问 proc_ 函数执行

单次运行最多不能超过 1000000 行

如果执行成功,这段 Lua 代码可以返回一个字符串值

这个字符串值将作为返回值返回给调用者

如果代码返回 nil,则会返回空字符串给调用者

如果执行失败,将返回 nil, 错误信息

运行事务 Lua 代码可以使用如下模块以及如下函数

base 模块(不包含 require)

table 模块

string 模块

math 模块

utf8 模块

bit32 模块

json 模块

os.time()

os.clock()

sys.mtime()

utils.gen_uuid()

proc_put(key, value)

proc_get(key)

proc_queue_push_back(key, value)

proc_queue_push_front(key, value)

proc_queue_pop_front(key)

proc_queue_pop_back(key)

proc_queue_pop_value(key, value)

proc_queue_count_value(key, value)

proc_queue_clear(key)

proc_queue_read(key)

proc_queue_size(key)

示例​

function proc_inc(key, int_value)
return proc_dict_run(string.format([[
local key = %q
local value = %d
local ov = proc_get(key)
if ov == '' then
ov = 0
else
ov = tonumber(ov)
end
if not ov then
error('not a number')
end
proc_put(key, tostring(ov + value))
return ov
]], key, int_value))
end

for i = 1, 20 do
nLog(proc_inc('haha', 10))
end