/
https://42jerrykim.github.io/ _index.md
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로 충분한 상황의 판단 기준을 정리합니다. mutex·spinlock·atomic 연산의 uncontended·contended 비용을 futex 시스템콜 개입 시점과 캐시 코히런시(MESI) 관점에서 정량 분석하고, Google Benchmark·perf로 직접 측정하는 방법을 다룹니다. 스레드 풀에서 단일 작업 큐의 경합을 줄이는 구조와 work-stealing 알고리즘(로컬 큐 LIFO/FIFO, victim 선택, 로드 밸런싱)을 다루며, 직접 구현과 oneTBB·Taskflow 채택의 판단 기준을 정리합니다. C++17 실행 정책(seq/par/par_unseq)과 C++20 unseq로 STL 알고리즘을 병렬화하는 원리, GCC(TBB)·Clang(libc++)·MSVC STL 구현 차이, 입력 크기별 손익분기점과 예외 시 std::terminate 함정을 다룹니다. C++20 코루틴으로 태스크를 체이닝하고 스레드 풀에 스케줄링하는 패턴과 비동기 파이프라인 구성을 다룹니다. symmetric transfer로 스택 증가 없이 태스크를 잇고, 코루틴 파라미터 수명 함정을 깨진 코드로 짚은 뒤 올바른 구현과 ASan 검증까지 정리합니다. Apple M 시리즈의 P코어·E코어 비대칭 멀티프로세싱과 macOS QoS 스케줄러, Unified Memory Architecture가 지연시간과 대역폭에 미치는 영향을 다룹니다. M5 Fusion Architecture 사례로 공유 메모리 구조의 트레이드오프 판단 기준을 정리합니다.