Skip to content

[Question] Item 16 - const 멤버함수를 스레드에 안전하게 작성하라 #4

Open
@JayCheck

Description

@JayCheck

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)

  • 글의 내용은 추후 변경 될 수 있음

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions