공부
Unity내의 병렬적 작업 처리와 유사 개념 정리
때려쳐아니때려치지마
2025. 2. 4. 17:26
개념 차이
병렬 (Parallel Process)
: 여러개의 CPU 코어가 동시에 여러 작업을 처리하는 방식
→ 여러 코어가 여러 동작을 동시 실행, 실질적 동시 실행 O
멀티스레드(Multi thread)
: 단일 프로세스에서 여러개의 thread가 동시에 실행되게 하는 방식
→ 한 프로세스에서 여러 스레드가 스케쥴링을 통해 스위칭되며 작업, 실질적 동시 실행 X
비동기 (Asynchronous)
: 순차적 처리하지 않고, 다른 작업을 처리하는 방식
→ 작업을 기다리지않고 넘김, 실질적 동시 실행 X
유니티에서 사용하는 키워드 개념 정리
Coroutine
: 비동기적으로 수행되는 함수 (싱글스레드)
유니티에서 프레임 기반으로 대기 후 진행하는 경우에 주로 사용, 프레임 기반 시간 지연
Async / await
: 비동기적으로 수행하는 키워드, 멀티스레드에서 동작할 수 있음
Task
: 비동기 추상화 클래스, 비동기 클래스를 만들고 멀티스레드에서 수행하게 할수있다.
// 비동기 작업 수행, 단일 스레드에서 실행
async void Start()
{
Debug.Log("Task started!");
// 3초 지연
await Task.Delay(3000); // 3000ms = 3초
// 3초 후에 실행되는 코드
Debug.Log("Task completed after 3 seconds!");
}
// 비동기 작업 수행, 멀티 스레드에서 실행
public class Example : MonoBehaviour
{
void Start()
{
// 별도의 스레드에서 작업을 실행
Task.Run(() => PerformHeavyTask());
}
void PerformHeavyTask()
{
// CPU 집약적인 작업 예시
for (int i = 0; i < 1000000; i++)
{
// 긴 작업
}
Debug.Log("Heavy Task Done");
}
}
** 한줄정리
병렬처리 > 멀티코어(CPU)에서 멀티 프로세스로 동시 작업
일반적인 비동기 작업 > 단일 프로세스에서 멀티 스레드로 스위칭하며 작업
유니티내에서 간단한 비동기적인 작업 > 코루틴(프레임 기반으로 주로 시간지연 작업)
참고자료