일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- unity
- Tween
- Unity Editor
- 프레임워크
- AES
- Dots
- Framework
- Job 시스템
- base64
- 다이나믹 폰트
- DotsTween
- 샘플
- RSA
- Dynamic Font
- 단말기 해상도
- 가이드
- sha
- 이미지 폰트
- TextMeshPro
- adfit
- C#
- Custom Package
- 2D Camera
- 커스텀 패키지
- 텍스트 메시 프로
- 최적화
- jumping ball
- job
- ui
- 암호화
Archives
- Today
- Total
EveryDay.DevUp
[Unity] Job 시스템 이해, JobHandle - (3) 본문
※ JobHandle을 보기 전, Job 시스템의 이해가 필요하다면 하단의 게시물을 참고
https://everyday-devup.tistory.com/97
● JobHandle
▶ JobHandle은 Job의 Schedule을 실행했을 때 반환되는 값으로, Job을 컨트롤 할 수 있는 기능을 가진다.
▶ Job은 독립적으로 실행될 수도 있지만, 특정한 Job의 경우 선행 Job의 실행이 끝난 뒤에 해당 결과를 바탕으로 자신의 Job을 실행 시켜야하는 경우가 있을 수 있다. 이때 JobHandle을 사용하여 Job의 종속성을 설정할 수 있다.
using UnityEngine;
using Unity.Jobs;
using Unity.Collections;
public class JobSample : MonoBehaviour
{
struct JobSigle : IJob
{
public int a;
public int b;
public NativeArray<int> result;
public void Execute()
{
result[0] = a + b;
}
}
struct JobAdd : IJob
{
public NativeArray<int> result;
public void Execute()
{
result[0] = result[0] + 1;
}
}
void Start()
{
NativeArray<int> result = new NativeArray<int>( 1, Allocator.TempJob );
JobSigle jobSigle = new JobSigle();
jobSigle.a = 1;
jobSigle.b = 2;
jobSigle.result = result;
JobHandle handle = jobSigle.Schedule();
JobAdd jobAdd = new JobAdd();
jobAdd.result = result;
JobHandle addHandle = jobAdd.Schedule( handle );
addHandle.Complete();
Debug.LogWarning( " addJob : " + result[0] );
result.Dispose();
}
}
: jobAdd가 JobSingle이 끝난 뒤에 호출하여 결과가 4가 나오게 됨을 확인할 수 있다.
▶ 필요한 부분의 Job의 종속성을 설정하는 것은 어쩔수 없지만, 기본적으로 Job은 하나의 수행을 독립적으로 수행할 때 좋다고 생각하기 때문에 최대한 종속성을 피하는 것이 좋다.
▶ 하나의 Job이 끝날 때까지 메인 스레드가 대기할 수 있도록 JobHandle.Complete()를 사용할 수 있다.
: Complete()는 Job의 Execute()가 끝날 때까지 메인 스레드를 대기하도록 만들기 때문에, 메인 스레드에서 Job의 NativeContainer에 안전하게 접근할 때 사용하면 좋다.
※ 후속 게시물
https://everyday-devup.tistory.com/100
※ 참고 자료
'DotsTween' 카테고리의 다른 글
[Unity] DotsTween 기능 및 사용 가이드 ( v.0.0.1 ) (2) | 2020.07.25 |
---|---|
[Unity] Job 시스템 이해, IJobParallelFor- (4) (2) | 2020.07.15 |
[Unity] Job 시스템 이해, NativeContainer - (2) (1) | 2020.07.15 |
[Unity] Job 시스템 이해, IJob - (1) (0) | 2020.07.15 |
[Unity] Update() vs Job, Burst 성능 비교 (0) | 2020.07.12 |