공부

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)에서 멀티 프로세스로 동시 작업

일반적인 비동기 작업 > 단일 프로세스에서 멀티 스레드로 스위칭하며 작업

유니티내에서 간단한 비동기적인 작업 > 코루틴(프레임 기반으로 주로 시간지연 작업)


참고자료

https://kimyc1223.github.io/blog/2024/06/23/TechPost.html