안녕하세요,
재재입니다.

이번 포스팅에서는
c++ mutable 사용하는 이유를 설명합니다.

(1) c++ mutable 어디에 사용하나요?

c++ mutable 은 mutex (mutual exclusion) 를 사용하는 코드에서 사용합니다.

왜 mutex 를 사용하는 이유는 뭘까요?

mutex 가 필요한 이유는,
멀티 스레딩 환경일 때 자원간 점유 문제 때문입니다.

  1. 멀티 스레딩 환경에서 자원을 공유 할 때,
    동시에 여러 스레드가 점유를 하면 문제가 생길 수 있습니다.
  2. 따라서 하나의 스레드가 점유하고 있으면,
    다른 스레드들은 해당 자원을 사용하기 위해 대기해야합니다.
  3. 그 과정에서 동기화도 필요합니다.

https://en.cppreference.com/w/cpp/thread/mutex

(2) c++ mutable 사용하는 이유는?

C++에서 mutable keyword 를 사용하는 이유를 정리해본다면,
아래와 같습니다.

  1. 상태 변경을 숨길 수 있습니다.
    클래스의 멤버 변수가 외부에서 직접 변경되는 것을 막을 수 있고,
    내부에서만 변경되도록 하고 싶은 경우에 mutable을 사용할 수 있습니다.
    특히, const 인 멤버변수도 바꿀 수 있습니다.
  2. mutex 에 mutable 을 사용하지 않으면,
    mutex lock 을 사용 할 수 없으며 상황에 따라 Compile Error 가 발생합니다.

1번에서 const 인 멤버변수를 바꾸는 것은 일반적인 경우는 아니기 때문에,
참고만 하셔도 될 것 같습니다.

(3) 결론

c++ mutable 은 코드에 안전성을 높이기 위해 활용하며,
c++ mutable 은 결국 mutex 와 같이 사용되어야 합니다.

mutex 예제 코드 도 확인해보세요!

c++ mutable 사용하는 이유
태그:                 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다