Unity-JobSystom

什么是Job System?

  • 一个job system通过创建jobs而不是线程来管理多线程的代码。Job是一个小的工作单元,不等同线程。管理运行在多个核心上的一组工人线程(worker threads)。
  • Job的处理数据是值类型,由NativeContainer管理,而NativeContainer的存在就是通过指针操作解决copy得来的数据的回传结果问题。
  • 当Job之间有数据依赖,用JobHandle之间的依赖来解决。总之原则就是一份数据只能由一个Job来修改。当数据不需要修改,强烈建议标记只读,提升性能。而且可以并行读取。

Tips:

  • Do not access static data from a job
  • Flush scheduled batches
  • Don’t try to update NativeContainer contents --没有指针概念,所以修改后要赋值回去。
  • Call JobHandle.Complete to regain ownership
  • Use Schedule and Complete in the main thread -- 不要尝试 schedule jobs within jobs.
  • Mark NativeContainer types as read-only
  • Check for data dependencies
  • Do not allocate managed memory in jobs
posted @ 2020-05-15 17:21  天山鸟  阅读(424)  评论(0)    收藏  举报