현대 컴퓨팅 환경을 지배하는 CPU 하드웨어는 단일 코어의 클럭 속도를 높이는 방식 대신, 하나의 칩셋 내부에 여러 개의 물리 코어를 탑재하는 멀티코어 아키텍처로 완전히 정착했습니다. 이러한 하드웨어 환경에서 단일 스레드로만 구동되는 프로그램을 작성하면 CPU가 가진 잠재 성능의 극히 일부분만 활용하게 되며, 대규모 연산이나 실시간 비동기 태스크 처리를 효율적으로 완수할 수 없습니다. 프로그램의 성능과 반응 속도를 한계치까지 끌어올리기 위해서는 연산 작업을 여러 실행 흐름으로 쪼개어 병렬로 처리하는 멀티스레드(Multithreading) 소프트웨어 설계가 필수적입니다. 하지만 하나의 메모리 공간을 공유하며 동시에 달리는 여러 스레드를 제어하는 일은 경합 조건이나 데이터 오염 같은 고난도의 버그를 동반하므..