카테고리 없음

[Rokiss 게임 서버 - 강의 정리] 4. 멀티스레드 개론

따킹라쿤 2025. 5. 20. 17:43

멀티스레드 개론

멀티스레드에 대해서 말하기 전에 우선 스레드란 무엇일까?

 

스레드란? 멀티 스레드란?

스레드는 프로세스 내에서 실행되는 작업 단위이다.

 

하나의 프로세스는 여러 스레드를 가질 수 있는데 - (멀티스레드) 

이때 이 스레드들은 메모리를 공유한다. 공유 메모리가 있다는 점이 프로세스와 다른 점이다.

 

하지만 스레드는 자신만의 메모리 - 스택, 레지스터, 프로그램 카운터-를 가진다.

 

그래서 멀티스레드란, 하나의 프로세스 내에서 여러 스레드가 동시에 작업하는 방식이다.

 

스레드는 어떻게 실행될까

 

아쉽게도 스레드는 스레드 스스로 실행되지 못한다.

스레드 역시 CPU가 스케줄링 되어야 실행된다.

 

단일 코어 CPU는 한 번에 하나의 스레드만 수행할 수 있다.

멀티 코어 CPU는 여러 스레드를 병렬로 실행할 수 있다.

 

이상적으로는 “1스레드 - 1코어”가 되면 좋겠지만 - 현실에서는 스레드 수가 코어 수를 초과하는 경우가 많다.

 

그럴 경우 컨텍스트 스위칭을 통해 번갈아 실행하며, 이 과정에서 오버헤드가 발생한다.

 

그러므로 스케줄링 전략이 중요해진다. 작업의 성격에 따라 스레드 수, 우선순위, 분배 방식을 신중히 설계해야 한다.

 

자원 공유와 동기화 문제

스레드들은 공유 자원에 동시 접근할 수 있기에 충돌이 발생할 수 있다.

 

이를 방지하기 위해 여러 동기화 기법들을 사용한다 (뮤텍스, 세마포어, 락, 조건변수)