async boundary

Tokio 설계에서도 스레드 경계는 Send와 Sync로 드러난다

태스크가 스레드 풀 사이를 이동할 수 있으면 Send가 필요하고, 공유 상태는 Arc나 채널로 경계를 명확히 한다.

tokio::spawnSend future 필요

스레드 이동 가능

LocalSet!Send future 허용

한 스레드에 고정

channel소유권 이동

공유 상태 감소

구분의미판단
상태 공유Arc<Mutex<T>>여러 태스크가 같은 값 사용
메시지 전달mpsc/oneshot값을 보내고 소유권 이전
!Send 값LocalSet로컬 태스크로 제한
동시성 오류컴파일 시 조건 불만족타입으로 설계 수정

핵심 async 설계는 await 문법보다 값이 어느 스레드까지 건널 수 있는지 정하는 것이다.