/
https://42jerrykim.github.io/ _index.md
C++26에 채택된 hazard_pointer(P2530)·rcu(P2545)의 안전한 메모리 회수 메커니즘과 grace period 개념을 다루고, 2026년 7월 기준 GCC libstdc++·Clang libc++·MSVC STL의 구현 현황과 도입 판단 기준을 정리합니다. mutex·spinlock·shared_mutex·futex 기반 프리미티브 중 워크로드에 맞는 락을 고르는 기준을 다룹니다. 임계 구역 길이·경합도·읽기쓰기 비율별 판단표와 adaptive mutex, SRWLOCK, os_unfair_lock의 구현 차이, 흔한 선택 오류를 정리합니다. CAS 루프와 ABA 문제로 lock-free 설계의 기본 메커니즘을 설명하고, 언제 lock-free가 실제로 유효한지 판단하는 기준을 정리합니다. Intel TSX/HTM이 2021년 마이크로코드로 사실상 폐기된 배경도 함께 다룹니다. Michael-Scott 큐, Treiber 스택, split-ordered list 해시맵의 CAS 재시도·헬핑 메커니즘과 메모리 회수 문제를 컴파일 가능한 C++20 코드와 ThreadSanitizer 검증 절차로 다룹니다. 리더가 락 없이 읽고 시퀀스 카운터로 일관성을 검증하는 Seqlock 패턴을 다룹니다. 카운터 설계, 짝수/홀수 판정 원리, 구현 함정, ThreadSanitizer가 이 패턴에서 오탐·미탐을 동시에 낼 수 있는 이유를 정리합니다. SPSC와 MPMC 큐의 설계 차이를 링버퍼 인덱스 관리 관점에서 다루고, Vyukov의 per-cell 시퀀스 번호 MPMC 알고리즘과 캐시 라인 패딩·로컬 인덱스 캐싱 기법을 컴파일 가능한 C++20 코드와 ThreadSanitizer 검증으로 설명합니다. C++20 std::jthread의 협력적 취소 메커니즘을 다룹니다. stop_token/stop_source/stop_callback의 내부 동작, 소멸자의 자동 request_stop+join, std::thread 대비 안전성 이점과 콜백 실행 스레드·마이그레이션 함정을 정리합니다. thread_local 접근 비용을 가르는 정적(Local/Initial Exec) TLS 모델과 동적(General/Local Dynamic) 모델의 차이를 분석하고, 스레드별 캐시·카운터 패턴, static TLS 고갈과 스레드 풀 재사용 함정을 다룹니다. IORING_SETUP_SINGLE_ISSUER로 io_uring 제출 경로의 락을 생략하는 원리와 thread-per-core 아키텍처가 결합해 지연시간을 줄이는 방식을 다룹니다. Apache Iggy의 마이그레이션 사례로 설계 판단 기준을 정리합니다. Wait-free와 lock-free의 진행 보장 차이(개별 스레드 vs 시스템 전체)를 Herlihy의 consensus 계층과 helping 메커니즘으로 설명하고, 실무에서 wait-free를 추구할 상황과 lock-free로 충분한 상황의 판단 기준을 정리합니다.