카테고리 없음
[Rokiss 게임 서버 - 강의 정리] 4. 멀티스레드 개론
따킹라쿤
2025. 5. 20. 17:43
멀티스레드 개론
멀티스레드에 대해서 말하기 전에 우선 스레드란 무엇일까?
스레드란? 멀티 스레드란?
스레드는 프로세스 내에서 실행되는 작업 단위이다.
하나의 프로세스는 여러 스레드를 가질 수 있는데 - (멀티스레드)
이때 이 스레드들은 메모리를 공유한다. 공유 메모리가 있다는 점이 프로세스와 다른 점이다.
하지만 스레드는 자신만의 메모리 - 스택, 레지스터, 프로그램 카운터-를 가진다.
그래서 멀티스레드란, 하나의 프로세스 내에서 여러 스레드가 동시에 작업하는 방식이다.
스레드는 어떻게 실행될까
아쉽게도 스레드는 스레드 스스로 실행되지 못한다.
스레드 역시 CPU가 스케줄링 되어야 실행된다.
단일 코어 CPU는 한 번에 하나의 스레드만 수행할 수 있다.
멀티 코어 CPU는 여러 스레드를 병렬로 실행할 수 있다.
이상적으로는 “1스레드 - 1코어”가 되면 좋겠지만 - 현실에서는 스레드 수가 코어 수를 초과하는 경우가 많다.
그럴 경우 컨텍스트 스위칭을 통해 번갈아 실행하며, 이 과정에서 오버헤드가 발생한다.
그러므로 스케줄링 전략이 중요해진다. 작업의 성격에 따라 스레드 수, 우선순위, 분배 방식을 신중히 설계해야 한다.
자원 공유와 동기화 문제
스레드들은 공유 자원에 동시 접근할 수 있기에 충돌이 발생할 수 있다.
이를 방지하기 위해 여러 동기화 기법들을 사용한다 (뮤텍스, 세마포어, 락, 조건변수)