A
Size: a a a
G
G
G
S
function foo()
local timeout = os.clock() + 5
while os.clock() < timeout do
do_something
end
end
А вот ограничивать время применения внешних функций — это тебе во-первых нужны корутины, а во-вторых в самих функциях не должно быть ничего блокирующего и yield на каждой точке выполнения, а поверх этой функции должна быть обёртка.S
function coroutine_sleep(timeout)
timeout = timeout + os.clock()
while os.clock() < timeout do
coroutine.yield()
end
end
function call_routine(func, timeout, ...)
local routine = coroutine.wrap(func, ...)
timeout = timeout + os.clock()
local result
while not result and os.clock() < timeout do
result = routine()
end
return result
end
function foo()
coroutine_sleep(3)
coroutine_sleep(5)
return 10
end
print("1", call_routine(foo, 5)
)print("2", call_routine(foo, 10)
)S
call_routine
блокирует, сделаешь себе свой менеджер параллельных задач.PS
PS
AZ
S
("srv_%d"):format(x)
FL
LU
FL
S