CPU와 컴파일러는 단순히 코드 순서대로 명령을 처리하지 않는다.
가시성(Visibility) 이란 텍스트나 객체가 얼마나 눈에 잘 들어오는지를 의미한다. 가독성이 읽기 쉬운 정도라면, 가시성은 그 텍스트가 얼마나 쉽게 인식되는지를 말한다.
C++11이전에는 C++표준자체가 멀티스레드를 염두하지 않고 설계되었다. 이후에는 멀티스레드 환경도 충분히 고려한 표준들이 제공되기 때문에 이를 이용하면 될 것.
정의되지 않은 행동은, 앞으로의 동작을 전혀 보장할수 없음을 뜻한다.
atomic객체는 thread-safe하게 작동하는기능들을 제공한다.
보통 변수 대입은 원자적으로 일어난다. 단, 32비트 환경에서 64비트 변수를 대입한다면 틀어질 것.
원자적 연산은 CPU가 한번에 처리하는 (더이상 쪼개지지않는) 연산들을 말한다.