Zum Hauptinhalt springen

Transaktionscode des Prozesswörterbuchs ausführen (proc_dict_run)

Deklaration

Rückgabeinhalt, Fehlermeldung = proc_dict_run(Transaktionscode)

Parameter

  • Transaktionscode
    String, auszuführender Lua-Transaktionscode

Rückgabewerte

  • Rückgabeinhalt
    String | nil; bei erfolgreicher Ausführung der vom Code zurückgegebene Wert, bei Fehler nil
  • Fehlermeldung
    Text | nil; bei erfolgreicher Ausführung nil, bei einem Fehler im ausgeführten Code die Fehlermeldung

Hinweise

Diese Funktion ist erst in Versionen nach 20250427 verfügbar.
Alle Prozesswarteschlangen-Wörterbücher mit dem Präfix "xxtouch." oder "1ferver." bleiben erhalten.
Führt den Transaktionscode des Prozesswörterbuchs aus; während der Ausführung des Transaktionscodes wird der Zugriff anderer Threads auf proc_-Funktionen blockiert.
Eine einzelne Ausführung darf höchstens 1000000 Zeilen umfassen.
Bei erfolgreicher Ausführung kann dieser Lua-Code einen Zeichenkettenwert zurückgeben.
Dieser Zeichenkettenwert wird als Rückgabewert an den Aufrufer zurückgegeben.
Wenn der Code nil zurückgibt, wird dem Aufrufer eine leere Zeichenkette zurückgegeben.
Bei fehlgeschlagener Ausführung werden nil und eine Fehlermeldung zurückgegeben.

Für die Ausführung des Transaktionscodes können die folgenden Module und Funktionen verwendet werden

base-Modul (ohne require)
table-Modul
string-Modul
math-Modul
utf8-Modul
bit32-Modul
json-Modul
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)

Beispiel

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