Message Passing
채널 메시지 설계 흐름
채널은 데이터 소유권을 보내는 쪽에서 받는 쪽으로 이동시켜 공유 메모리 없이 스레드 간 협력을 구성합니다.
clone은 송신 핸들, move는 메시지 값
모든 Sender가 drop되면 Receiver 반복이 자연스럽게 끝납니다.
main
channel()
tx / rx 한 쌍 생성
tx.clone()
생산자 핸들만 복제
drop(tx)
마지막 Sender까지 정리
sender A
owns tx
스레드로 핸들 이동
send(v)
v 소유권이 채널로 이동
sender end
핸들 drop
sender B
owns tx2
clone된 Sender
send(w)
w 소유권도 채널로 이동
sender end
핸들 drop
receiver
owns rx
소비자 쪽 핸들
recv v, w
받은 값의 소유권 확보
for msg in rx
메시지가 올 때마다 반복
loop ends
모든 Sender drop 감지
ownership move
send 이후 원본은 사용하지 않음
값은 송신 스레드에서 수신 스레드로 이동하므로 공유 잠금 없이 안전합니다.
termination
1
필요한 생산자 수만큼 Sender를 clone합니다.
2
Receiver는 recv 또는 반복자로 메시지를 처리합니다.
3
마지막 Sender가 drop되면 수신 반복이 종료됩니다.