반응형

mutex 3

C++ lock ownership 제대로 이해하기

C++에서 mutex를 직접 lock하고 unlock하는 코드는 짧아 보이지만, 예외나 early return이 끼어드는 순간 실수하기 쉽습니다.그래서 실무 C++에서는 mutex를 직접 관리하기보다 RAII object로 lock ownership을 관리하는 방식을 자주 사용합니다.대표적인 도구가 std::lock_guard와 std::unique_lock입니다.둘 다 scope가 끝날 때 unlock을 보장하지만, 사용할 수 있는 상황과 표현하는 의도는 다릅니다. std::lock_guard는 단순한 scope lock이고, std::unique_lock은 lock ownership을 상태로 들고 다니는 더 유연한 RAII lock object입니다. lock_guard와 unique_lock의 차..

C++/Concepts 2026.07.25

Race condition이란? 동시성 버그와 임계 구역 이해하기

멀티스레드와 운영체제를 공부하다 보면 race condition이라는 표현을 자주 만나게 됩니다.한국어로는 보통 경쟁 상태라고 부릅니다.말 그대로 여러 실행 흐름이 같은 데이터나 자원을 두고 경쟁하면서, 실행 순서에 따라 결과가 달라지는 문제입니다.프로세스와 스레드, 데드락을 이해했다면 그다음으로 반드시 짚고 넘어가야 하는 동시성 개념입니다. Race condition은 여러 작업이 공유 자원에 동시에 접근하고, 그 접근 순서가 결과를 바꿀 때 발생하는 동시성 버그입니다. 이번 글에서는 race condition이 무엇인지, 왜 재현하기 어려운지, C++ 코드와 DB 예시에서는 어떻게 나타나는지, 실무에서는 어떤 기준으로 예방해야 하는지 정리해보겠습니다. 1. Race condition은 무엇인가?Rac..

CS 2026.06.23

운영체제 데드락 쉽게 정리하기

동시성 문제를 공부하다 보면 race condition 다음으로 자주 만나는 개념이 데드락입니다.데드락은 단순히 프로그램이 느려지는 문제가 아니라, 여러 작업이 서로를 기다리다가 아무도 앞으로 나아가지 못하는 상태입니다.운영체제, 멀티스레드 프로그래밍, DB 트랜잭션, 서버 장애 분석에서 모두 등장하는 개념이라 면접에서도 자주 묻습니다. 데드락은 자원을 가진 작업들이 서로 다른 자원을 기다리면서 무한 대기 상태에 빠지는 문제입니다. 이번 글에서는 데드락이 발생하는 조건, 실제 코드와 DB 상황에서 어떻게 나타나는지, 실무에서는 어떻게 예방하고 추적하는지 정리해보겠습니다. 1. 데드락은 무엇인가?데드락은 여러 실행 주체가 서로 자원을 기다리면서 더 이상 진행하지 못하는 상태입니다.여기서 실행 주체는 프로세..

CS 2026.06.19
반응형