더북(TheBook)

가능하다면 이렇게 잠금 하나로 모든 멤버 변수를 보호하는 것이 낫습니다.

class A
{
  int a;
  int b;
  mutex mutex;
};

잠금 범위가 너무 좁으면, 즉 임계 영역 개수가 너무 많으면 프로그램을 유지 보수하기도 어렵고 그만큼 프로그래머가 실수할 확률도 높습니다.

그렇다고 무조건 클래스 멤버 변수는 잠금 하나로만 보호해야 하는 것은 아닙니다. 어떤 멤버 변수를 액세스하는 동안 많은 연산량이나 디바이스 타임이 있을 때는 잠금을 둘 이상으로 쪼갤 필요가 있습니다. 예를 들어 멤버 변수 a는 작업을 쌓는 큐고, b는 큐에서 꺼낸 작업을 디바이스 타임을 포함하여 처리하는 경우가 있습니다.

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