kciter의 '브라우저의 메인 스레드는 비싸다'를 정리한다. 프론트엔드 성능 문제의 본질을 네트워크·번들 크기가 아닌 단일 메인 스레드의 시간 예산 문제로 재정의하고, '아껴 쓰기'(쪼개기·모으기·우선순위·미루기)와 '안 쓰기'(컴포지터·워커·일 자체 없애기)라는 두 축의 전략을 코드 수준에서 짚는다.
1~6단계를 하나의 엔드투엔드 ML 파이프라인(Ray AIR)으로 조립합니다. Data→Train→Tune→Serve를 한 스크립트로 잇고 HTTP로 최종 호출하며, 지금까지 배운 concurrency 처리(워커 풀·Job 내부/간 동시성)를 종합하고 KubeRay 확장 전망을 살펴봅니다.
배운 모든 것을 통합하는 실전 프로젝트 — 대량 URL을 크롤링하는 워커 풀을 Python(asyncio·재사용)과 Go(고루틴·채널)로 각각 구현하고, 처리량·메모리·코드 복잡도를 비교·회고하며 시리즈를 마무리합니다.
동시성의 또 하나의 큰 축, 메시지 전달 — Python queue.Queue/multiprocessing.Queue/Pipe와 Go channel+select를 비교하고, Fan-out/Fan-in 파이프라인 패턴으로 대량 작업을 분배하고 수집합니다.
여러 실행 단위가 공유 상태에 접근할 때 데이터 레이스를 막는 동기화 — Python Lock/RLock/Semaphore/Event와 Go sync.Mutex/atomic/WaitGroup을 비교하고, 반드시 피해야 할 데드락 4대 조건을 다룹니다.
CPU-집약 작업을 진짜 병렬로 돌리는 방법 — Python multiprocessing/ProcessPoolExecutor로 GIL을 우회하고, Go의 GOMAXPROCS와 데이터 레이스의 위험성을 같은 소수/해시 벤치마크로 비교합니다.
I/O-집약 작업을 처리하는 핵심 도구 — Python threading이 GIL 아래에서도 왜 I/O엔 효과적인지, 그리고 Go의 고루틴이 왜 스레드보다 훨씬 가벼운지(M:N 스케줄러)를 같은 크롤링 벤치마크로 비교합니다.
Ray의 상태를 가진 분산 객체 모델인 Actor를 배웁니다. Counter 액터의 생명주기부터, Job 내부의 in-process 동시성(threaded vs async 액터와 `max_concurrency`), 그리고 고정 워커 풀인 ActorPool까지 실습하며 상태·동기화·동시성의 선택지를 정리합니다.
동시성 학습의 출발점 — 운영체제가 프로그램을 실행하는 방식(프로세스·스레드·컨텍스트 스위치)을 이해하고, 동시성 vs 병렬성의 차이와 Python/Go가 채택한 동시성 모델을 개괄합니다.
Python과 Go를 짝지어 멀티프로세싱·멀티스레딩·비동기를 정복하는 종합 학습 로드맵입니다. 동시성 기초부터 동기화, 통신, 실전 통합 프로젝트까지 6단계로 도장을 깨며 나아갑니다.
한 대의 노트북에서 Ray의 분산 실행·데이터 파이프라인·분산 학습·하이퍼파라미터 최적화·서빙을 모두 손으로 체득하는 로드맵입니다. Task/Actor/샤드의 멘탈 모델부터 Data→Train→Tune→Serve 통합 프로젝트까지 7단계로 도장을 깨며 나아갑니다.
CppCon 2024의 Daniel Anderson 강연 'Introduction to Wait-free Algorithms in C++'를 자막 기반으로 정리한다. lock-free와 wait-free의 진짜 차이(진행 보장), CAS 루프의 한계, 그리고 wait-free 설계의 핵심 기법인 '돕기(helping)'를 sticky counter 예...
스마트 포인터(Box, Rc, RefCell), 동시성(스레드·채널·Mutex/Arc), 자동화 테스트, 그리고 미니 grep CLI 프로젝트로 지식을 통합합니다.
Python GIL의 작동 원리, Thread/Process/Async 비교, 그리고 Python 3.14 free-threaded 공식 지원(PEP 779)과 실전 벤치마크를 코드 예제와 함께 상세히 설명합니다.