취소는 스레드를 죽이지 않는다: Python, Rust, Kotlin의 실행 중단 경계
asyncio.to_thread, Tokio spawn_blocking, Kotlin coroutine과 MCP 요청을 취소할 때 실제로 멈추는 것과 계속 실행되는 것을 구분한다.
Engineering notes
엔지니어링 노트
고루틴과 스레드의 실행 수명, 취소, 메모리 비용을 이해하는 글.
6편 · 최신순
asyncio.to_thread, Tokio spawn_blocking, Kotlin coroutine과 MCP 요청을 취소할 때 실제로 멈추는 것과 계속 실행되는 것을 구분한다.
Cloudflare가 1.1.1.1 DNS 캐시의 엔트리 구조를 바꿔 메모리 100TB를 줄이면서 처리 성능까지 높인 과정을 정리한다.
Go 1.24.5에서 닫힌 채널과 select의 동작을 재현하고, 고루틴 종료 신호와 실제 종료를 구분한다.
Java 21과 Spring Boot 3.2에서 요청 스레드와 코루틴 dispatcher가 별도로 선택되는 이유를 실행 위치와 자원 수명으로 살펴본다.
스레드의 실행 상태와 공유 메모리를 구분하고, 동기화와 장애 격리의 범위를 설명한다.
Go 1.24.5의 고루틴과 GOMAXPROCS 기본값, 컨테이너 CPU 제한, 작업 수명과 자원 사용을 구분한다.