Data-Oriented Programming and Job System 面向数据编程
对算力要求很高
Basics of Parallel Programming 并行编程基础
Multitasking
Preemptive Multitasking
Non-preemptive Multitasking
Thread context switch 线程切换昂贵
Parallel Problems in Parallel computing : 并行计算的数据交互问题
Data Race in Parallel Programming : 数据竞争
Blocking Algorithm - Locking Primitives : 加锁
Other Issues with Locks : 阻断式编程
死锁
一个线程报错,整个进程错误
没有优先级
尽量不要使用 Lock
Lock-free Programming 无锁编程
Atomic Operation : 原子操作,硬件来支持,
Lock free vs Wait free
编译器编译后的代码,无法保证按照代码编写的顺序执行
Parallel Framework of Game Engine
Fixed multi-thread
Thread Fork-Join (树结构)
Task graph (有向无环图结构)
Task graph 无法动态增加节点,无法暂停等待
Job System
coroutine 协程,暂时暂停当前程序,运行别的代码,不会切换核,需要能够恢复栈空间的局部变量
Fiber-based Job System
几个核就生成几个 Work Thread / Fiber
LIFO and FIFO Mode
需要分配任务,JobSystem 工作优先级,一般是 LIFO,像个堆栈一样
Job Stealing
需要在 Work Thread 间调整任务
最后更新于