세 가지 동시성 모델 — GIL, Virtual Thread, Goroutine

CPython 의 GIL 은 멀티스레드 CPU bound 를 차단하고 우회법을 강제한다. Java 는 OS 스레드 1:1 의 비용을 Java 21 virtual thread 로 우회해 thread-per-request 를 살렸다. Go 는 처음부터 M:N 스케줄러로 goroutine 을 경량화했다. 세 모델이 같은 백엔드 워크로드에서 다른 결정으로 이어진다.

2024년 6월 15일 · 약 5분 읽기

Go Concurrency 모델

Go의 동시성 모델은 CSP를 기반으로 Goroutine과 Channel을 핵심 도구로 제공한다. 각 도구의 동작 원리와 선택 기준을 정리한다.

2024년 4월 5일 · 약 4분 읽기

concurrency-go

Go의 동시성 패턴 세 가지(mutex, channel, lock-free)를 직접 구현하고 벤치마크하며 체화한 과정의 기록.

2024년 4월 3일 · 약 3분 읽기

낙관적 락과 비관적 락

트랜잭션은 원자성, 락은 직렬성을 담당한다 — 서로 대체재가 아니다. 격리 수준의 기본 읽기로는 못 막는 Lost Update 를 비관적 락과 낙관적 락이 어떻게 메우는가, 그리고 선택 기준.

2023년 10월 1일 · 약 4분 읽기

rust-server

Rust Book Chapter 20의 멀티스레드 HTTP 서버를 따라 구현하며 소유권과 동시성이 타입 레벨에서 강제되는 것을 체감한 기록.

2022년 3월 13일 · 약 3분 읽기