프로세스와 스레드의 차이?


- 프로세스는 독립된 힙 메모리 영역을 할당받고, 그 프로세스 내의 쓰레드는 독립된 스택 메모리 영역을 할당받는다.
- 여러 작업을 수행해야할 때 스케쥴링이 이루어진다
(스케쥴링 : 어떤 쓰레드 작업을 먼저 수행할지, 어떤 쓰레드를 더 많이 수행해야 효율적인지)
Unity에서 Main Thread가 아닌 다른 스레드에서 Transform을 변경할 수 있을까?
Unity의 대부분의 엔진 API는 메인 스레드에서만 안전하게 호출될 수 있다.
따라서 Main Thread가 아닌 다른 스레드에서 Transform을 변경할 수 없다.
하지만 Unity MainThread Dispatcher 함수를 활용하면 다른 스레드에 접근이 가능하다.
Task를 활용해서 타 스레드에 접근할 경우 컴파일 단계에서 오류가 발생하지만
위 함수를 사용할 경우 Unity 자체에서 접근할 수 있도록 지원해준다.
왜 모든 작업을 비동기로 처리하지 않는 걸까?
비동기식 작업은 구현이 복잡하고, 디버깅이 어렵다.
또한 빈번한 데이터 접근과 수정이 필요한 경우, 전체 성능이 저하될 수 있다.
무한 대기상태에 빠질 수도 있다.
Unity에서 멀티스레딩을 구현하기 위한 방법
1. C# Threads 사용
스레드를 생성하여 비동기 작업을 처리하는 방법
2. Task (Async/Await)
Coroutine과 유사하지만 비동기 작업을 더 구조적으로 관리할 수 있다
3. Unity's Job System
작업을 작은 단위로 나눠 멀티스레드에서 병렬로 처리할 수 있게 한다.
CPU와 GPU의 작동 방법은 어떤 차이?
CPU
서버의 핵심 계산 장치로 하드웨어 구성 요소이다.
웹 브라우징과 같이 대기 시간 또는 코어당 성능이 중요한 작업에 적합
GPU
더 전문화된 하드웨어 구성 요소
CPU보다 병렬로 실행되는 복잡한 수학 연산을 더 효율적으로 처리할 수 있다.
더 높은 품질의 비주얼과 더 원활한 게임 플레이를 지원하므로 현대 게이밍을 위한 필수 구성 요소
CPU | GPU | |
함수 | 서버의 주요 처리 연산을 해결하는 일반화된 구성 요소 | 병렬 컴퓨팅에 탁월한 전문화된 구성 요소 |
처리 | 직렬 명령 처리를 위해 설계 | 병렬 명령 처리를 위해 설계 |
설계 | 코어 수는 더 적지만 코어 성능은 더 강력함 | CPU보다 코어 수는 더 많지만 CPU 코어보다 성능이 떨어짐 |
적합한 용도 | 범용 컴퓨팅 애플리케이션 | 고성능 컴퓨팅 애플리케이션 |
'Study > 개념 정리' 카테고리의 다른 글
[Study] 네트워크 & 렌더링 파이프라인 (1) | 2024.07.26 |
---|---|
[Study] 게임수학 (0) | 2024.07.24 |
[Study] JSON과 직렬화 (0) | 2024.07.22 |
[Study] Graph와 길찾기 (0) | 2024.07.19 |
[Study] Tree (0) | 2024.07.18 |