item16의 스터디 중 const 멤버 함수를 "항상" thread safety 하게 작성하라는 의도인가? 에 대한 토의가 있었습니다.
만약 저자가 C++11/14에서 const 멤버 함수도 항상 thread safety 하게 작성 해야 한다는 의도라면 기존의 설명 방식처럼, C++ 98 대비 C++11/14 부터는 달라지는 점이 있기 때문에 const 멤버 함수도 thread safety 하게 작성해야 한다 라는 논지로 설명을 했을거라는 의견이 있었습니다.(@JayChl)
(그게 아니라면 C++11/14 에 대한 이야기 보다는 general 한 programming rule 이나 C++ 자체에 대한 설명으로 보는게 적합할 것으로 생각됨)
반면에 다른 의견으로 getter 로 활용되는 const 멤버 함수의 경우 책의 예제처럼 caching 을 하려 한다면 멤버변수의 수정이 불가피 할 것이고, 이런 경우 피할 수 없는 것이 mutable 과 thread safety 이므로 이를 설명하기 위한것이다 라는 의견도 있었습니다.(@romandev)
잠정적으로 아래의 Herb Sutter의 강의를 통해서 C++98 대비 C++11부터 "const" 에 대한 정의가 아래와
같이 변경되었고 변경된 C++11에서 const 멤버함수는 정의에 따라서 thread satety 하게 작성해야 한다로 판단하기로 하였습니다.
동영상 링크
item16의 스터디 중 const 멤버 함수를 "항상" thread safety 하게 작성하라는 의도인가? 에 대한 토의가 있었습니다.
만약 저자가 C++11/14에서 const 멤버 함수도 항상 thread safety 하게 작성 해야 한다는 의도라면 기존의 설명 방식처럼, C++ 98 대비 C++11/14 부터는 달라지는 점이 있기 때문에 const 멤버 함수도 thread safety 하게 작성해야 한다 라는 논지로 설명을 했을거라는 의견이 있었습니다.(@JayChl) (그게 아니라면 C++11/14 에 대한 이야기 보다는 general 한 programming rule 이나 C++ 자체에 대한 설명으로 보는게 적합할 것으로 생각됨)
반면에 다른 의견으로 getter 로 활용되는 const 멤버 함수의 경우 책의 예제처럼 caching 을 하려 한다면 멤버변수의 수정이 불가피 할 것이고, 이런 경우 피할 수 없는 것이 mutable 과 thread safety 이므로 이를 설명하기 위한것이다 라는 의견도 있었습니다.(@romandev)
잠정적으로 아래의 Herb Sutter의 강의를 통해서 C++98 대비 C++11부터 "const" 에 대한 정의가 아래와 같이 변경되었고 변경된 C++11에서 const 멤버함수는 정의에 따라서 thread satety 하게 작성해야 한다로 판단하기로 하였습니다. 동영상 링크
C++98 : const == logically const C++11 : const == thread safe (bitwise const or internally synchronized)