피드로 돌아가기
Mastering Concurrency with the Sleeping Barber Problem
Dev.toDev.to
Backend

Concurrency 제어를 통한 한정적 Resource 최적 할당 및 Synchronization 설계

Mastering Concurrency with the Sleeping Barber Problem

Brandon Kindred2026년 6월 12일13beginner

Context

Multi-threaded 환경에서 다수의 Task가 단일 Resource에 접근할 때 발생하는 Race Condition과 Resource 경합 문제 분석. 제한된 대기 공간 내에서 효율적인 작업 처리와 시스템 안정성을 보장하기 위한 메커니즘 필요성 대두.

Technical Solution

  • Lock 및 Condition Variable을 활용한 Shared Resource 접근 제어로 Data Consistency 보장
  • Semaphore 구조의 대기실 설계를 통한 유한한 Resource Allocation 모델 구현
  • Barber의 State를 'Sleeping'과 'Working'으로 구분하여 불필요한 CPU 연산을 방지하는 Blocking/Waiting 전략 적용
  • 고객 도착 시점에 따른 Wake-up 신호 전송으로 Task 간의 효율적인 Synchronization 달성
  • 대기 공간 포화 시 신규 요청을 즉시 거절하는 Load Shedding 방식의 가용성 관리

- Thread Pool 구현 시 Queue 크기 제한을 통해 시스템 과부하 방지 여부 검토 - Shared Resource 접근 시 Mutex/Lock의 범위를 최소화하여 Deadlock 위험 제거 - 비동기 처리 시스템에서 Worker의 유휴 상태(Idle)를 효율적으로 관리하는 Blocking 메커니즘 적용

원문 읽기