2024-07-16

실행 중인 프로그램의 인스턴스를 의미
프로세스는 독립적인 메모리 공간을 가지며, 운영 체제에 의해 관리
프로세스 내에서 실행되는 작업의 단위
쓰레드는 프로세스의 메모리 공간을 공유하며, 더 가벼운 작업 단위로 간주
코루틴은 메인 스레드에서 실행되지만, 비동기적으로 작업을 수행할 수 있게 해준다.
Unity 는 기본적으로 단일 쓰레드를 지원하며,
게임 오브젝트의 업데이트, 렌더링, 물리 계산 등 대부분의 주요 작업이 메인 스레드에서 처리된다.
동기식 (Sync)
비동기식(ASync)
Unity 에서는 다음의 방법으로 멀티 쓰레드를 구현할 수 있다.
| 기능/패턴 | 특징 |
|---|---|
| Job System | 여러 작업을 정의하고 이를 여러 스레드에서 병렬로 실행할 수 있게 해준다. |
| Burst Compiler | Job System 과 함께 사용하여 컴파일 과정에서 C# 코드를 최적화하여 퍼포먼스를 높일 수 있다. |
| Async/Await 패턴 | 해당 키워드를 통해 비동기적으로 데이터를 로드하거나 네트워크 요청을 처리 |
| Thread 클래스 | 직접 쓰레드를 생성할 수 있으나 Unity API 와 함께 사용하기에 어려움 |
CPU는 일반적인 작업을 처리하기 위한 범용 프로세서
적은 수의 강력한 코어를 가지고 있다.
주로 복잡한 연산과 제어 흐름을 처리하는 데 적합.
GPU는 대량의 병렬 처리를 수행하기 위해 설계된 프로세서
수백에서 수천 개의 간단한 코어를 가지고 있다.
주로 그래픽 렌더링 및 데이터 병렬 처리에 최적화
| CPU | GPU | |
|---|---|---|
| 주요 작업 | 복잡한 연산, 제어 흐름 | 동일한 작업을 대량으로 처리하는 그래픽스 연산 |
| 강점 | 순차적인 작업 처리 | 병렬 작업 처리 |
| 메모리 접근 | 캐시 메모리 구조를 통해 빠른 데이터 접근 가능 | 메모리 대역폭은 넓지만, 접근 속도는 느림 |
비동기적인 작업이 필요할 때, 코루틴만 사용해봤는데
다음 프로젝트에서 비동기적인 작업이 필요하다면
오늘 알게 된 Job System 이나 Async/Await 패턴 등을 사용해보면 좋을 것 같다.