본문 바로가기

Memory Barrier

[C++] 메모리 가시성과 메모리 장벽 메모리 가시성 (Memory Visiblity)1. 정의- Thread에서 변경한 특정 메모리 값이, 다른 Thread에서 제대로 읽어지는가 라고 할 수 있다 2. 문제- cpu의 메모리 아키텍쳐. 즉, 레지스터와 캐쉬가 존재하기 때문이다. : 각각의 코어는 메인 메모리와 별도로 각각의 레지스터와 캐쉬를 가지기 때문이다.- 컴파일러의 최적화: 컴파일러는 프로그램이 최대한 빠르게 실행될 수 있도록 코어의 레지스터와 캐쉬를 사용하도록 한다. 3. 결론- Shared Memory 모델의 Concurrent, Parallel Programming에서는, 한 코어에서의 값 변경을 여러 코어가 공유하는 메인 메모리로 반영하는 작업을 적절히 수행해야 메모리 가시성을 유지할 수 있다 메모리 장벽 Memory Barri.. 더보기
[Design pattern] Singleton Pattern with C++ 11 Singleton Pattern 1. 정의: 클래스에서 만들 수 있는 인스턴스가 오직 하나일 경우에 이에 대한 접근은 어디에서든지 하나로만 통일하여 제공한다. 2. 기본형 : 기본형의 문제는 Thread Safe 하지 않다는 것이다.: Multi-Thread 환경에서 Race Condition이 발생할 수 있다. 3. Double-Checked Locking Pattern (DCLP): 해제는 제외.: 두 번의 체크와 락을 통해서 Thread 안정성을 확보 한다. 4. Using C++11 Atomic (Acquire and Release Fences)- Atomic Class: 정수형 또는 포인터 타입에 대해 산술 연산들을 atomic하게 수행할 수 있도록 해주는 템플릿 클래스.: 이전 atomic 연.. 더보기