더북(TheBook)

1.16.6 잠금된 뮤텍스나 임계 영역 삭제

멀티스레드 프로그래밍 중에 종종 범하는 실수 중 하나가 바로 잠금된 뮤텍스나 임계 영역을 삭제하는 것입니다. 다음 예시 코드처럼 말이죠.

class A
{
  mutex mutex;
  int a;
};
 
void func()
{
  A* a = new A();
  lock(a->mutex);
  delete a;
}

이 문제는 상대적으로 쉽게 감지할 수 있습니다. 뮤텍스나 임계 영역의 파괴자 함수 안에 “이미 잠금하고 있으면 오류를 내라.”라는 기능을 추가하면 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.