unity 之 Job system

C# Job System Overview

How the C# Job System works

The Unity C# Job System 允许用户编写 multithreaded code

写多线程代码可以提供高性能的好处。其中包括帧率的显著提高。在c#作业中使用Burst编译器可以提高代码生成质量,这也可以显著降低移动设备上的电池消耗。

它集成了Unity内部使用的东西(Unity的本地Job System),用户编写的代码和Unity共享工作线程。这种协作避免了创建比CPU内核更多的线程,这会导致对CPU资源的争用。

What is multithreading?

在单线程计算系统中,一条指令一次输入,一个结果一次输出。加载和完成程序的时间取决于需要CPU完成的工作量。

多线程是一种编程类型,它利用CPU的能力在多个核心之间同时处理多个线程。它们不是一个接一个地执行任务或指令,而是同时运行

默认情况下,一个线程在程序的开始运行。这就是“主线”。主线程创建新线程来处理任务。这些新线程彼此并行运行,并且通常在完成后将其结果与主线程同步。

如果您有一些任务需要长时间运行,那么这种多线程方法可以很好地工作。然而,游戏开发代码通常包含许多需要同时执行的小指令。如果您为每个线程创建一个线程,您可能会得到许多线程,每个线程的生命周期都很短。这可能会使CPU和操作系统的处理能力达到极限。

通过拥有一个线程池,可以减轻线程生存期的问题。但是,即使使用线程池,也可能有大量线程同时处于活动状态. 拥有比CPU内核更多的线程会导致线程之间争夺CPU资源,从而导致频繁的上下文切换.上下文切换是这样一个过程:通过执行来保存线程的部分状态,然后在另一个线程上工作,然后重新构造第一个线程,然后继续处理它。上下文切换是资源密集型的,所以应该尽可能避免使用它。

Wha

猜你喜欢

转载自blog.csdn.net/qq_37672438/article/details/103402293