4. 락 vs lock-free, CAS, ABA 문제, 잡큐/Actor 모델
난이도 상 해설 보기 →
문제
문제 4 — 락 vs lock-free, CAS, ABA 문제, 잡큐/Actor 모델
면접 질문
-
lock-free 프로그래밍이란 무엇인가? 락 기반 방식 대비 장단점을 말하라. "lock-free면 항상 빠른가?"
-
CAS(Compare-And-Swap) 의 동작을 설명하고, CAS만으로 구현한 lock-free 스택/큐에서 발생할 수 있는 ABA 문제가 무엇인지, 왜 위험한지 설명하라. 해결책은?
-
게임서버에서 흔한 잡큐(job queue) 와 Actor 모델(룸=단일 스레드) 설계가 동시성 문제를 어떻게 다루는지 설명하라. 락을 쓰는 방식 대비 장점은?
응용 시나리오
룸(전투 인스턴스) 하나에 4명이 들어가 있고, 각자의 패킷이 서로 다른 네트워크 IO 스레드에서 도착한다. 룸 상태(HP, 위치, 버프 등)는 모든 플레이어가 공유한다.
설계 A: 룸 상태의 각 필드마다 락을 잘게 걸고, IO 스레드들이 직접 룸 상태를 수정한다. 설계 B: IO 스레드는 패킷을 룸의 잡큐에 넣기만 하고, 룸 전용 워커 스레드 1개가 큐에서 꺼내 순차적으로 처리한다.
- 설계 A의 위험(데드락, 경합, 일관성)을 구체적으로 지적하라.
- 설계 B(Actor/단일 스레드 룸)가 동시성 버그를 어떻게 원천 차단하는지 설명하라. 이때 룸 상태에 락이 필요한가?
- 설계 B의 단점/한계는 무엇이며, 코어가 많을 때 전체 서버 처리량은 어떻게 끌어올리는가?
답안 작성
내 답안 · 자동 저장
직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.