Trawling

개발 · 최신기사

언어와 프레임워크, SDK와 개발 방식·도구의 변화를 다룹니다.

발행

Python 3.14의 concurrent.interpreters, GIL 작업 시간을 3.6초에서 0.9초로 줄이다

Python 3.14의 concurrent.interpreters로 CPU 작업을 네 개의 서브인터프리터에 나누자 네 스레드보다 훨씬 빠르게 처리됐습니다. 다만 인터프리터 하나에는 동시 호출을 하나만 허용하고 시작 비용도 프로세스보다 높아, 데이터 전달 방식과 작업 수명에 맞춘 설계가 필요합니다.

발행

스핀락은 해롭습니다 (2020)

스핀락은 잠금이 풀릴 때까지 CPU를 점유하며 기다리므로, 잠금 보유 스레드가 선점되면 대기 스레드까지 CPU를 낭비하고 우선순위 역전을 일으킬 수 있습니다. 글은 Rust의 no_std 환경에서도 스핀락을 무조건 대안으로 삼지 말고, 운영체제 뮤텍스나 초기화 구조를 검토하라고 제안합니다.

발행

Rust로 그린 스레드 런타임을 처음부터 만들기

Rust로 그린 스레드 런타임을 직접 구현하며 스택 할당, ARM64 레지스터 문맥 전환, 작업 스케줄링 과정을 설명합니다. 고정 크기 스택과 워커별 큐를 쓰는 이유, `join`과 패닉 처리까지 살펴보며 스택형 태스크와 비동기 태스크의 차이도 짚습니다.

발행

결정적 동시성

UC Berkeley의 Edward Lee가 동시성과 비결정성을 구분하고, 결정성을 물리 시스템이 아닌 모델의 속성으로 보자고 제안합니다. 결정적 모델이 성능을 반드시 떨어뜨리지 않으며, 동시·분산 시스템의 설계와 장애 허용을 쉽게 할 수 있다는 주장을 소개합니다.

발행

Rust에서 Arc를 다운캐스팅하고 싶다면

비싼 값을 캐시에 저장할 때 Arc를 쓰면 값 전체를 복제하지 않고 공유할 수 있지만, Arc 안의 특정 변형만 가리키는 Arc를 만들기는 어렵습니다. 글은 Pin과 자체 참조 구조체를 이용한 투영 방법을 제안하며, 댓글에서는 투영 함수의 soundness 문제와 Arc만으로 주소 안정성을 확보하는 방안을 지적합니다.

발행

Go 동시성 한눈에 정리하기

Go 동시성의 주요 개념을 실행 가능한 예제로 정리한 미니북입니다. 고루틴과 채널부터 동기화, 테스트, 스케줄링, 진단 도구까지 빠르게 훑으며, 데이터 경쟁과 경쟁 조건의 차이도 설명합니다.