- 博客(3)
- 收藏
- 关注
原创 【学习笔记】UE的TaskGraph系统
在进行多线程编程时,往往会需要处理多个有依赖关系的任务的同步。对于游戏引擎这样的庞然巨物,拥有一个良好设计来处理任务的依赖,对于提高程序性能和引擎可维护性是很有必要的。如果没有TaskGraph,我们的planA是利用条件变量和锁等机制实现同步,随着代码膨胀难以维护且性能不好;planB是手动对DAG图进行拓扑排序构建合适的任务队列,对于随时动态变化的各种任务来说还是不够好,因为每个任务的执行时间都是不确定的,没法保证当前顺序是性能最好的。
2025-04-03 22:06:16
1717
原创 【学习笔记】多线程编程相关基础知识
最初,为了加快进程的执行速度,实现进程的并发,人们发明了线程。在这之后,人类还是既怠惰又贪婪,要求程序有很快的响应时间以提高体验,因此让操作系统使用时间片轮转+多级反馈队列调度算法等抢占式算法,来对线程进行CPU调度。在学校写的程序,由于仅关注实现而没有追求性能,一般都是单线程程序;而一旦进入多线程的领域,这种算法抢占式的特点,使得多个线程之间的执行顺序难以预测,可以说是随机的。
2025-03-27 20:20:11
1474
原创 【学习笔记】现代游戏gameplay架构层面中的ECS架构的理解——受守望先锋GDC2017演讲的启发
笔者最近才了解到ECS架构,就像踏足了一个未知的深海,于此记录自己探索的收获,如有错误请大方指出。ECS,也就是Entity-Component-System架构,其中Entity不存储任何数据和行为,仅作为标识符,《守望先锋》中使用一个32位数来标识每一个Entity;Component仅存储纯数据,没有任何行为,对于每个Entity,它拥有了某些数据就代表着它拥有了能够表示某些行为的功能;System没有任何数据,仅读写不同的Component组成的元组(Tuple)来实现对应的功能。
2025-03-23 19:57:24
1757
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅