1. 동시성 기초 개념: 프로세스/스레드, race condition, 동기화 도구
난이도 하 해설 보기 →
문제
문제 1 — 동시성 기초 개념: 프로세스/스레드, race condition, 동기화 도구
면접 질문
-
프로세스(process)와 스레드(thread)의 차이를 메모리 구조 관점에서 설명하라. 게임서버에서 "스레드"를 많이 쓰는 이유는 무엇인가?
-
race condition(경쟁 상태) 과 critical section(임계 구역) 이 각각 무엇인지 정의하라. 둘은 어떤 관계인가?
-
mutex와 spinlock의 차이를 설명하라. 각각 언제 쓰는 게 유리한가?
응용 시나리오
게임 룸 서버에서 여러 워커 스레드가 다음 코드를 동시에 실행한다.
// 전역 카운터: 현재 접속자 수
static int g_playerCount = 0;
void OnPlayerEnter() { g_playerCount++; }
void OnPlayerLeave() { g_playerCount--; }
부하 테스트 후 로그를 보니, 실제 접속/퇴장 횟수와 g_playerCount 최종값이 맞지 않는다(예: 동시 1000명 입장 후 카운트가 987).
- 왜 이런 일이 벌어지는가?
g_playerCount++한 줄을 기계어 수준에서 설명하라. - 위 코드의 임계 구역은 정확히 어디인가?
- 이 카운터를 보호한다고 할 때, 짧은 증감 한 번에 대해 mutex / spinlock / 원자 연산 중 무엇을 고르겠는가? 근거와 함께 말하라.
답안 작성
내 답안 · 자동 저장
직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.