我应该在自己的线程中运行每个插件吗?

本文关键字:插件 运行 自己的 线程 我应该 | 更新日期: 2023-09-27 18:06:27

在我的游戏中,用户可以加载自定义脚本。通常会加载50-100个脚本。每个脚本通过它的Update方法在每一帧被调用。

  1. 当一个脚本崩溃时,其他脚本不应该受到影响。
  2. 允许脚本更新方法每帧最多运行1毫秒。所以我也需要能够中止脚本冻结/不及时反应。

我该怎么做?我认为在这里设置每秒3000 - 6000个线程并不是最佳实践。我也不能启动线程,一旦调用更新循环,等待16毫秒,因为脚本需要与游戏同步。脚本依赖于每一帧运行。

线程池是正确的选择吗?如果是,我该如何终止脚本超时?

我应该在自己的线程中运行每个插件吗?

短:防止恶意代码是困难的。

1。当一个脚本崩溃时,其他脚本不应该受到影响:要实现这一点,在Windows中唯一可靠的方法是在单独的进程中运行每个脚本。例如,由"脚本"引起的StackOverflow异常会使你的进程崩溃。跨进程通信不太可能满足您的性能需求。

2。每个脚本1毫秒:中止线程是一个解决方案。避免使用大量的线程(超过10个线程是有问题的:在线程之间切换会降低性能,堆栈空间会消耗所有内存,通常跨线程同步状态很有趣)。考虑不要重新启动表现不佳的"脚本"——这样您就不需要担心太多的线程。终止调用。注意,杀死线程没有必要会杀死所有与"脚本"相关的东西,因为它可能已经产生了自己的线程/异步操作/线程池任务…