Send / Sync in async

비동기 스택에서도 스레드 경계는 타입으로 드러난다

Tokio 태스크, 공유 상태, 채널을 고를 때도 SendSync 조건이 어떤 값이 스레드 사이를 건널 수 있는지 알려줍니다.

런타임 경계

spawn

태스크 이동

멀티스레드 런타임의 태스크는 다른 워커로 옮겨질 수 있으므로 Send 경계가 중요합니다.

Arc

공유 소유권

스레드나 태스크가 같은 상태를 잡아야 하면 Arc<T>를 사용합니다.

Mutex

락 범위

짧은 락은 std, await를 넘는 락은 tokio Mutex로 분리해 판단합니다.

mpsc

작업 전달

상태 공유보다 메시지 전달이 단순하면 채널로 backpressure를 둡니다.

Tokio 선택 지도

state

요청 사이 상태 공유

Arc<Mutex<T>>로 소유권과 가변 접근을 함께 표현합니다.

pipeline

비동기 작업 분배

tokio::sync::mpsc는 태스크 사이 처리량을 조절합니다.

log

호출 경로 추적

tracing span은 태스크가 섞여도 요청 단위 흐름을 남깁니다.

http

서버 계층 연결

axum 핸들러는 async 함수로 동작하며 공유 상태와 채널을 조합합니다.

핵심 정리

동시성 기본기는 비동기 서버에서도 그대로 이어집니다. 차이는 스레드보다 태스크 단위로 사고하되, 타입이 허용하는 이동과 공유 경계를 계속 확인하는 데 있습니다.