我已经彻底了解了 lua,但我不明白的最后一件事是协程。
现在摆在我面前的任务是:我的主脚本连接一个在安全环境中运行的第三方模块。攻击者不能对这个模块做任何错事,因为他没有可用的函数或变量。但他唯一能做的肮脏伎俩就是挂起:while true do end. 因此,我必须用一个带有计时器的协程包装该函数,该计时器只是倒计时几秒钟,如果在此期间该函数尚未完成,则将其杀死并抛出错误。请帮帮我。
我已经彻底了解了 lua,但我不明白的最后一件事是协程。
现在摆在我面前的任务是:我的主脚本连接一个在安全环境中运行的第三方模块。攻击者不能对这个模块做任何错事,因为他没有可用的函数或变量。但他唯一能做的肮脏伎俩就是挂起:while true do end. 因此,我必须用一个带有计时器的协程包装该函数,该计时器只是倒计时几秒钟,如果在此期间该函数尚未完成,则将其杀死并抛出错误。请帮帮我。
我同意@AndrejLevkovitch 在评论中所写的一切——在这种情况下,协同程序将无济于事。
这个问题有两种解决方案:如果性能是您的首要任务,那么使用类似cjson的东西。
如果您想使用本机 lua 表,那么任何序列化程序都可以,例如lume.deserialize。它不比解释器慢,但不比 cjson 快。