0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JobSystemと、UpdateAfter等で決められる優先順位

Posted at

メモとして残します。

[UpdateBefore(typeof(SystemB))] や [UpdateAfter(typeof(SystemB))] などの属性は システムの実行順序 を定義するためのものです。一方で、JobHandle や Dependency は ジョブの実行順序 を定義するために使用されます。

優先順位について
システムの実行順序 ([UpdateBefore] / [UpdateAfter]) は、各システムが実行される順番を決定します。システム自体の実行順序を保証するために役立ちますが、それぞれのシステムの中でスケジュールされるジョブに関しては、これだけでは制御できません。

ジョブの依存関係 (JobHandle や Dependency) は、実際にジョブが実行される順番を制御します。システムがジョブをスケジュールした後、ジョブがいつ実行されるか(あるジョブが他のジョブの完了を待つかどうか)は、JobHandle や Dependency によって管理されます。

具体的な流れ
[UpdateBefore] / [UpdateAfter] によってシステムの実行順序が決定されますが、そのシステム内でスケジュールされたジョブの実行順序は、JobHandle や Dependency によってさらに細かく管理されます。

もし、SystemA が SystemB よりも後に実行されると定義されていたとしても、SystemB 内のジョブが SystemA のジョブに依存するように JobHandle が設定されている場合、SystemB のジョブは SystemA のジョブが完了するまで実行されません。逆に言えば、JobHandle で依存関係が定義されている場合、その依存関係が優先されます。

まとめ
システム実行順序 は [UpdateBefore] や [UpdateAfter] によって制御されますが、これはあくまでシステムがジョブをスケジュールする順序です。
ジョブ実行順序 は JobHandle と Dependency によって制御され、これが最終的にジョブがいつ実行されるかを決定します。
結果として、ジョブの依存関係 (JobHandle や Dependency) の方が実行順序の優先度が高いということになります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?