1. 동시성 기초 개념: 프로세스/스레드, race condition, 동기화 도구

난이도 하 해설 보기 →
문제

문제 1 — 동시성 기초 개념: 프로세스/스레드, race condition, 동기화 도구

면접 질문

  1. 프로세스(process)와 스레드(thread)의 차이를 메모리 구조 관점에서 설명하라. 게임서버에서 "스레드"를 많이 쓰는 이유는 무엇인가?

  2. race condition(경쟁 상태)critical section(임계 구역) 이 각각 무엇인지 정의하라. 둘은 어떤 관계인가?

  3. mutexspinlock의 차이를 설명하라. 각각 언제 쓰는 게 유리한가?

응용 시나리오

게임 룸 서버에서 여러 워커 스레드가 다음 코드를 동시에 실행한다.

// 전역 카운터: 현재 접속자 수
static int g_playerCount = 0;

void OnPlayerEnter()  { g_playerCount++; }
void OnPlayerLeave()  { g_playerCount--; }

부하 테스트 후 로그를 보니, 실제 접속/퇴장 횟수와 g_playerCount 최종값이 맞지 않는다(예: 동시 1000명 입장 후 카운트가 987).

  • 왜 이런 일이 벌어지는가? g_playerCount++ 한 줄을 기계어 수준에서 설명하라.
  • 위 코드의 임계 구역은 정확히 어디인가?
  • 이 카운터를 보호한다고 할 때, 짧은 증감 한 번에 대해 mutex / spinlock / 원자 연산 중 무엇을 고르겠는가? 근거와 함께 말하라.
답안 작성
내 답안 · 자동 저장

직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.