C++ 비대칭 펜스의 내부 동작: Linux membarrier() 분석

C++ Details of Asymmetric Fences

C++ 비대칭 펜스의 내부 동작: Linux membarrier() 분석

C++ 표준화가 제안된 비대칭 스레드 펜스(asymmetric thread fence)의 개념과 Linux에서의 실제 구현을 살펴봅니다. 빠른 경로(common path)는 컴파일러 배리어만으로 최적화하고, 느린 경로(uncommon path)에서 membarrier() 시스템 콜을 사용해 강력한 동기화를 제공하는 방식입니다. Folly 라이브러리의 구현을 중심으로, C++ P1202R0 제안서와 Linux 커널의 membarrier() 동작 원리를 설명합니다.

membarrier() 시스템 콜은 멀티코어 시스템에서 메모리 배리어 명령의 오버헤드를 줄이는 데 도움이 되지만, 이 시스템 콜은 메모리 배리어보다 무겁기 때문에 단순히 메모리 배리어를 이 시스템 콜로 대체하는 것만으로는 효과적으로 사용할 수 없습니다.

이 날의 다른 글

2026-07-07