thread run

스레드는 코드 조각을 동시에 돌리지만 종료와 소유권 경계가 먼저다

동시성은 독립 작업을 겹쳐 실행하는 구조이고, 병렬성은 여러 코어에서 실제로 동시에 처리하는 실행 방식이다. Rust에서는 spawn, move, join을 함께 읽는다.
읽는 기준 출력 순서는 보장되지 않는다. 생성한 스레드가 끝나야 하는 지점과 값이 어느 스레드로 이동하는지를 먼저 표시한다.
Rust 스레드 실행 기준표
개념 의미 코드 신호 읽을 위험
동시성 여러 작업이 독립적으로 진행된다. 작업 분리와 스케줄링 순서가 고정됐다고 착각한다.
병렬성 여러 코어에서 실제로 동시에 실행된다. CPU 코어와 운영 체제 스케줄러 항상 빨라진다고 가정한다.
thread::spawn 클로저를 새 스레드에서 실행한다. 반환값은 JoinHandle 메인 종료 전에 끝나지 못할 수 있다.
move 필요한 값을 클로저 안으로 옮긴다. move || 빌린 값이 다른 스레드에서 오래 살아남는다.
join 생성된 스레드 완료를 기다린다. handle.join() 기다리는 위치에 따라 출력 순서가 달라진다.
Start spawn은 작업을 시작하지만 완료를 보장하지 않는다.
Own move는 새 스레드가 쓸 값을 명확히 소유하게 한다.
Order 출력 순서는 스케줄러에 따라 달라져 테스트 기준이 되기 어렵다.
Wait join은 합류 지점이며 프로그램 종료 경계를 만든다.