Я просмотрел lua-users Sleep Function ссылку, чтобы найти не занятое решение для ожидания проблемы сна, и я не доволен ни одним из них. Тем не менее я попытался использовать несколько, чтобы обеспечить задержку в конце функции, использующей хвостовые вызовы.Почему моя функция вызова хвоста не останавливается и не выдает поток?
Обычно я не использовал бы хвостовые звонки, но так как lua не оставляет стека за хвостовыми вызовами, это мне подходит.
К сожалению, я вижу, что мой процессорный шип составляет около 20%, и программа сразу же не реагирует без какой-либо промывки выхода после ее начала.
Задача (упрощенный) выглядит следующим образом:
function myFunc()
-- do some stuff
-- lots of snazzy logic and function calls
-- heck, throw in a few prints
print "Going to sleep"
-- sleep for a bit
os.execute("sleep 10")
print "Waking up"
-- tail call
return myFunc()
end
Я попытался сокет выбрать метод, os.execute и, конечно, занят ожидания. Из них только ожидание дает ожидаемое поведение.
Являются ли эти другие не занятые решения для ожидания также не блокирующими? То есть они позволяют обрабатывать хвост, несмотря на задержки?
Как я могу очистить выход и функция должна ждать 10 секунд, прежде чем возобновлять работу без ожидания?
Это не хвост. Для этого вам нужно «вернуть myfunc()». –
Я не уверен, что я точно понимаю цель здесь. Какова цель здесь? В чем проблема? –
@EtanReisner Это контур управления для скрипта, который работает 24-7. – Stephen