본문 바로가기
Study/개념 정리

[Study] 멀티스레드 & GPU

by chobbo 2024. 7. 23.

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

 

 

 

- 프로세스는 독립된 힙 메모리 영역을 할당받고, 그 프로세스 내의 쓰레드는 독립된 스택 메모리 영역을 할당받는다. 

- 여러 작업을 수행해야할 때 스케쥴링이 이루어진다

   (스케쥴링 : 어떤 쓰레드 작업을 먼저 수행할지, 어떤 쓰레드를 더 많이 수행해야 효율적인지)

 

 

 


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