해결된 질문
작성
·
238
0
조금 개념이 헷갈리는데요. 가시성의 개념이 어떤 쓰레드에서 공유변수의 값 하나를 수정했을 때, 다른 쓰레드가 해당 변수를 읽어들일 때
그 수정된 값을 읽어들인다는 보장이 없다. (캐시의 문제)
여기서 원자적 연산을 진행하면 동일 객체에 대해서 동일한 수정 순서를 관찰한다고 했는데, 항상 수정된 이후의 값이 관찰되므로
가시성이 해결된다고 보면되나요?
17분 50초쯤에 동일한 수정순서를 관찰한다해서 가시성문제가 여전히 해결된다고 하지 않는다고 하셨는데 34분 37초쯤에서는 atomic의 기본연산이 seq_cst정책이 디폴트이고 가시성 문제와 코드 재배치문제도 바로 해결된다고 하시는데
어떤말이 맞는지 궁금합니다
답변 1
1
SEQ_CST 옵션으로 하면 해결되지만
다른 느슨한 정책은 순서만 보장하거나 다르게 동작할 수 있습니다.
다만 이론과 현실은 조금 다를 수 있고
인텔 계열 칩에서는 가시성 문제를 재현하기 어려울거에요