Dots之路-核心包_JobSystem_01

前言

本文为 Metaverse大衍神君 Dots 之路的记录。
仓库地址 RoadToDotsTutorials

如何将主线程逻辑转移到 Jobs 工作线程中执行

TODO:

Unity Jobs System 是什么

  • 包含 C# Jobs System 与 C++ Jobs System
  • 利用多核计算平台来简单安全的编写与执行多线程代码
  • **既可以与 ECS 结合使用也可以单独使用
  • 不需要关心平台 CPU 核心资源情况

C# Jobs System

  • No Reac Condition
    • 只访问数据的拷贝
    • 或者可以转换一段 buffer 的所有权给这个 Job(Native Container)
  • 使用和 Unity 引擎内 C++ JobSystem 系统的代码
    • 引擎和游戏线程之间没有上下文切换的开销

Job 程序可使用数据类型

Blittable Typs


因为 C# 与 C++ 下的内存管理和值的类型定义不同。
![[Pasted image 20250925131124.png]]

NativeContainer
  • 非托管内存
  • 有 DisposeSentinel 来避免内存泄漏错误
  • 有 AtomicSafetyHandle 来追踪所有权与权限
  • 需要手动 Dispose 释放
  • 没有引用返回,会在 C# 7 中支持
  • Annocation Types
    • Persistent: 长生命周期内存
    • TempJob:只在 Job 中存在的短生命周期,4 帧以上会受到警告
    • Temp: 一个函数返回前的短生命周期

Job 的调度方式

  • Run:主线程立即顺序执行
  • Schedule:单个工作线程或主线程,单个 Job 顺序执行
  • ScheduleParalledl:在多个工作线程上同时执行,性能最好,但多个线程访问同一数据时可能会发生冲突

Dots之路-核心包_JobSystem_01
https://lshgame.com/2025/09/27/Dots_Road_Core_Package_JobSystem_01/
作者
SuHang
发布于
2025年9月27日
许可协议