2009-11-01 2 views
4

Скажем, я запускаю скрипт, и игровой клиент ждет завершения скрипта до его обновления. Может ли Lua сделать что-то из «тайм-аута»? Как, могу ли я установить приоритет на обновить, чтобы он оставил скрипт для выполнения обновления, а затем после слов он мог вернуться к тому месту, где он был в скрипте?Может ли Lua «Timeout»?

+0

Я думаю, что вы лучше с многопоточным. Один поток для сценария Lua, другой для обновлений. –

ответ

1

Вы также можете установить крючок подсчета с подходящим счетом для таймаута и прекратить выполнение сценария в крючок.

0

Lua использует совместную многопоточность, поэтому скрипт должен знать, сколько времени прошло, прежде чем передать управление обратно вызывающему абоненту. Не трудно понять, как долго он запускается с использованием os.time и получает разницу В некоторых случаях это может быть более сложным t, но если скрипт представляет собой цикл, это не должно быть сложно. Как только вы выяснили, что вы запустили слишком долго, выполните команду coroutine.yield(), и когда вы хотите возобновить сценарий, просто вызовите lua_resume из цикла обновления.

0

Вы можете запустить весь скрипт lua_State и lua в другом потоке. Когда скрипт Lua обращается к функциям, которые вы реализовали, которые должны изменять вещи в основном потоке, используйте мьютексы и другие вещи, чтобы сделать этот поток потокобезопасным.

Таким образом, вы можете легко повесить ваш Lua-скрипт или что-то сделать, пока ваш основной поток может продолжать работать нормально, однако он также требует, чтобы все ваши реализованные функции обращались к чему-либо основному потоку, возможно, (например, графику) для потоковой передачи.

Смежные вопросы