Tokio 설계에서도 스레드 경계는 Send와 Sync로 드러난다
태스크가 스레드 풀 사이를 이동할 수 있으면 Send가 필요하고, 공유 상태는 Arc나 채널로 경계를 명확히 한다.
스레드 이동 가능
한 스레드에 고정
공유 상태 감소
| 구분 | 의미 | 판단 |
|---|---|---|
| 상태 공유 | Arc<Mutex<T>> | 여러 태스크가 같은 값 사용 |
| 메시지 전달 | mpsc/oneshot | 값을 보내고 소유권 이전 |
| !Send 값 | LocalSet | 로컬 태스크로 제한 |
| 동시성 오류 | 컴파일 시 조건 불만족 | 타입으로 설계 수정 |
핵심 async 설계는 await 문법보다 값이 어느 스레드까지 건널 수 있는지 정하는 것이다.