Планирование задач Lua

Я писал некоторые сценарии для игры, сценарии записаны в Lua. Одно из требований, которые имеет игра, - то, что метод Обновления в Вашем lua сценарии (который называют каждым кадром) может взять не более приблизительно 2-3 миллисекунд для выполнения, если это делает игру, просто зависает.

Я решил эту проблему с сопрограммами, все, что я должен сделать, назвать Многозадачность. RunTask (SomeFunction) и затем задача работает как сопрограмма, я затем должен рассеять Многозадачность. Урожай () всюду по моему коду, который проверяет, сколько времени задача работала за, и если это - более чем 2 мс, это приостанавливает задачу и возобновляет его следующий кадр. Это в порядке, за исключением того, что я должен рассеять Многозадачность. Урожай () везде всюду по моему коду, и это - реальная путаница.

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

Править:: Чтобы быть ясным, я - модификация игра, которая означает, что у меня только есть доступ к Lua. Никакие приемы C++ не позволяются.

5
задан Martin 22 April 2010 в 01:47
поделиться