DyrmanЕсть ли скрипт, который определяет, выполняется ли данная функция или уже нет? (без использования флага в самой функции)
Например, есть:
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 проверяет запущена ли функция в данный момент.