thread safety

스레드 안전 흐름은 시작보다 합류와 수명 경계를 먼저 확인한다

새 스레드는 실행 순서가 고정되지 않는다. 안전한 사용은 값의 이동, 핸들 보관, 합류 지점, 공유 상태 여부를 분리해 읽는 데서 시작한다.
핵심 구분 spawn은 시작, move는 수명 경계, join은 완료 확인이다.
스레드 사용 안전 흐름표
경계 질문 안전 장치 실패 신호
spawn 이 작업은 새 스레드에서 독립 실행돼도 되는가. 클로저가 필요한 입력만 갖는다. 메인 흐름과 출력 순서를 기대한다.
move 새 스레드가 쓸 값의 소유권은 어디 있는가. 빌린 값 대신 소유 값을 넘긴다. 스레드가 오래 사는 참조를 잡는다.
JoinHandle 나중에 완료를 확인할 핸들을 보관했는가. 핸들을 변수에 담고 합류 위치를 정한다. 생성만 하고 종료를 추적하지 않는다.
join 현재 스레드가 어디에서 기다려야 하는가. 결과를 확인하고 panic 가능성을 다룬다. 조기 종료로 작업이 끝까지 못 간다.
공유 상태 같은 값을 여러 스레드가 동시에 만지는가. 채널, Arc, 잠금 구조를 검토한다. 경합 조건과 수명 문제가 섞인다.
No order 스케줄링은 운영 체제가 결정하므로 출력 순서는 테스트 기준이 아니다.
Main exit 메인이 먼저 끝나면 생성된 스레드도 끝까지 실행되지 못할 수 있다.
Owned values move로 필요한 값을 넘기면 수명 경계가 선명해진다.
Wait point join 위치가 완료 보장과 프로그램 흐름을 결정한다.