Unity Job System 与多线程
Unity 的作业系统允许您创建多线程代码
以便您的应用程序可以使用所有可用的 CPU 核心来执行代码。这样可以提高性能,因为您的应用程序可以更高效地利用其运行的所有 CPU 核心的容量,而不是在一个 CPU 核心上运行所有代码。
Unity 使用自己的本机作业系统通过多个工作线程来处理自己的本机代码,这取决于应用程序运行的设备上可用的 CPU 核心数。通常,Unity 在一个线程上执行您的代码,该线程在程序启动时默认运行,称为主线程。但是,当您使用作业系统时,Unity 会在工作线程上执行您的代码,这称为多线程。
作业是执行一项特定任务的小型工作单元
作业接收参数并对数据进行操作,类似于方法调用的行为方式。作业可以是独立的,也可以依赖于其他作业完成才能运行。在 Unity 中,作业是指任何实现了IJob接口的结构。
只有主线程可以调度和完成作业
它无法访问任何正在运行的作业的内容,并且两个作业不能同时访问一个作业的内容。为了确保作业高效运行,您可以使它们相互依赖。Unity 的作业系统允许您创建复杂的依赖链,以确保您的作业按正确的顺序完成。
作业类型
IJob
IJob:在作业线程上运行单个任务。
IJobParallelFor
IJobParallelFor:并行运行任务。每个并行运行的工作线程都有一个独占索引,以便安全地访问工作线程之间的共享数据。
IJobParallelForTransform
IJobParallelForTransform:并行运行任务。每个并行运行的工作线程都有一个来自转换层次结构的独占转换可供操作。<