Unity C# Job System 官方文档翻译(Base Unity2019.3)一-概述/什么是多线程/什么是Job System

本文深入探讨Unity的C# JobSystem,一种用于编写高效多线程代码的系统,特别适用于游戏开发。JobSystem简化了多线程编程,提高了游戏性能,减少了电池消耗。文章详细介绍了JobSystem的工作原理,包括Job的创建、调度、依赖管理,以及如何与Unity的EntityComponentSystem配合使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本系列是基于Unity 2019.3的官方文档翻译的。原文比较生硬,我在个人觉得需要解释的地方增加了自己理解和批注。欢迎留言讨论。

原文地址
https://docs.unity3d.com/Manual/JobSystem.html

C#Job System

Unity C#Job System使您可以编写与Unity Engine交互的简单且安全的多线程代码,以增强游戏性能。您可以将C#Job System与Unity Entity Component System(ECS)结合使用,该体系结构使为所有平台创建高效的机器代码变得简单。

索引

C#Job System概述

C#Job System如何工作
       Unity C#Job System允许用户编写与Unity的其他部分良好交互的多线程代码,并使编写正确代码的过程变得更加容易。编写多线程代码可以提供高性能的好处。这些包括显着提高帧速率。将Burst编译器与C#Job System一起使用可以提高代码生成质量(这里是指编译后生成的机器代码),这也可以大大减少移动设备上的电池消耗。
       C#Job System的一个重要方面是,它与Unity内部使用的内容(Unity’s native job system)集成在一起。用户编写的代码和Unity共享工作线程。这种合作避免了创建比CPU内核更多的线程,这将导致CPU资源争用。

有关更多信息,请观看在GDC上谈论Unity的内容-Job System&Entity Component System

什么是多线程?

       在单线程计算系统中,一次执行一条指令,一次产生一条结果。加载和完成程序的时间取决于您需要CPU完成的工作量。多线程是一种编程类型,它利用CPU的功能跨多个内核同时处理多个线程。它们不是同时执行任务或指令,而是同时运行。
       默认情况下,一个线程在程序的开头运行。这是“主线程”。主线程创建新线程来处理任务。这些新线程彼此并行运行,并且通常在完成后将其结果与主线程同步。
       如果您有一些长时间运行的任务,则这种多线程方法很好用。但是,游戏开发代码通常包含许多小的指令,可以立即执行。如果为每个线程创建一个线程,则最终可能会有很多线程,每个线程的生存期都很短。这可能会限制CPU和操作系统的处理能力。
       有一个线程池(Thread Pool)可以减轻线程寿命的问题。但是,即使您使用线程池,也可能同时有大量活动的线程。具有比CPU核心更多的线程会导致线程彼此争用CPU资源,从而导致频繁的上下文切换。上下文切换是以下过程:在执行过程中部分保存线程的状态,然后在另一个线程上工作,然后重建第一个线程,以继续对其进行处理。上下文切换会占用大量资源,因此应尽可能避免使用它。(我想凡是有过多线程开发经历的同学看完这一段后会默默的点个赞,表示认同)

什么是Job System?

       Job System通过创建Job而不是线程来管理多线程代码。Job System管理跨多个核心的一组工作线程。通常每个逻辑CPU内核只有一个工作线程,以避免上下文切换(尽管它可能为操作系统或其他专用应用程序保留一些内核)。Job System将Job放入Job队列中以执行。Job System中的工作线程从Job队列中获取项目并执行它们。Job System管理依赖关系(Job之间的),并确保Job以适当的顺序执行。

什么是Job?

       一项Job是完成一项特定任务的一小部分工作。Job接收参数并对数据进行操作,类似于方法调用的行为。Job可以是独立的,也可以依赖其他Job才能运行。

什么是Job依赖性( job dependencies)?

        在复杂的系统(如游戏开发所需的系统)中,每个Job不太可能是独立的。一个Job通常是为下一个Job准备数据。Jobs知道并支持依赖项才能完成这项工作。如果jobA依赖于jobB,Job System确保JobA直到JobB完成才开始执行。

 

延展阅读

https://www.howtogeek.com/194756/cpu-basics-multiple-cpus-cores-and-hyper-threading-explained/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值