跳至主要內容

執行行程詞典事務代碼 (proc_dict_run)

聲明

返回內容, 錯誤資訊 = proc_dict_run(事務代碼)

參數

  • 事務代碼
    字串型,需要執行的事務 Lua 代碼

回傳值

  • 返回內容
    字串型 | nil,執行成功返回代碼返回的值,執行失敗返回 nil
  • 錯誤資訊
    文字型 | nil,執行成功返回 nil,執行代碼發生錯誤時返回錯誤資訊

說明

該函式在 20250427 以後的版本方可使用
所有以 "xxtouch." 或 "1ferver." 開頭的行程隊列詞典全部被保留
執行行程詞典事務代碼,事務代碼執行期間,將阻止其它執行緒訪問 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