让我们说我正在运行一个脚本,游戏客户端会在更新之前等待脚本完成。 Lua可以做一个“超时”的事吗?比如,我可以在更新时设置优先级,以便让脚本执行更新,然后在单词之后可以返回到脚本中的位置吗?
答案 0 :(得分:1)
您还可以设置一个计数挂钩,其中包含适当的超时计数和挂起的脚本中止执行。
答案 1 :(得分:0)
Lua使用协作式多线程,因此脚本必须知道在将控制权传递给调用者之前已经花了多长时间。不难发现它使用os.time运行多长时间并获得差异。在某些情况下,这可能会更困难,但如果脚本是一个循环,它应该不难。一旦你发现你运行的时间太长,就去做一个coroutine.yield(),当你想恢复脚本时,只需从你的更新循环中调用lua_resume。
答案 2 :(得分:0)
您可以在另一个线程中运行整个lua_State和lua脚本。当Lua脚本访问您实现的需要修改主线程中的内容的函数时,使用互斥锁和其他东西来使该访问线程安全。
这样,当主线程可以继续正常运行时,您可以轻松地将Lua脚本挂起或执行任何操作,但是,它还要求您使所有实现的函数访问主线程可能正常处理的任何内容(像图形一样是线程感知的。