Есть ли скрипт, который определяет, выполняется ли данная функция или уже нет? (без использования флага в самой функции) Например, есть:
for i=1,100 do startThread(Func); end
Получается так, что могут запуститься несколько функций Func, даже не смотря на то, что могла бы не завершиться предыдущая.
local threads = {}
local startExec = function(func) local threads = threads errorHook(function() %threads[%func] = nil end) threads[func] = 1 func() threads[func] = nil end
function startThreadOnce(func) if not %threads[func] then startThread(%startExec, func) end end
function isFunctionRunning(func) return %threads[func] end
В данном примере startThreadOnce запускает функцию только если она не запущена в данный момент. isFunctionRunning проверяет запущена ли функция в данный момент.