Mana Engine:API的线程安全性
框架图最终看起来像这样。 一行。 这是我们想要的完美选择。 任务可以是它们碰巧遇到的任何线程,并且没有两个线程可以同时接触API。 这里有一些细微差别。 从技术上讲,在我们的引擎中, DebugWindow2可以先于DebugWindow1 。 这完全取决于它们初始化的顺序。无需赘述,可以说有很多机制可以控制DebugWindows的运行顺序。 因此,将非线程安全的API集成到我们基于任务的引擎中时,这是一种无锁的方法。 尽管它永远不会等待或阻塞,但是如果ImGui本地支持它,它将以串行方式进行大量处理,这可能是并行的。 但是,这非常好,并且该方法可以与我们使用的其他API一起使用。 此外,更新UI并不是我们的性能瓶颈,因此使ImGui线程安全是安全性而非性能驱动的目标。 串行运行根本不是问题。 您将注意到有关该解决方案的信息,即我要告诉引擎的是“我希望SystemA依赖SystemB”而不显式调用SystemB。 几乎就像我想要一个类似DependsOn的语法。 问题在于,在Mana Engine中,一个关键原理是,任何系统都不需要了解其他系统。…