mpsc channel
여러 송신자가 값을 이동시키고 하나의 수신자가 순서 없이 받는다
송신 단말을 clone하면 생산자는 늘어나지만 소비자는 하나로 유지된다. 값은 send 시점에 채널로 이동하고, 모든 송신자가 사라지면 수신 반복이 끝난다.
tx clone
새 생산자 스레드에 넘길 송신 핸들을 만든다.
send
메시지 값의 소유권이 채널로 이동한다.
rx iter
수신자는 도착하는 값을 하나씩 처리한다.
producer A
tx 복제본 사용
첫 번째 스레드는 clone된 송신 단말로 메시지를 보낸다.
producer B
원본 tx 사용
두 번째 스레드도 같은 수신 단말을 향해 값을 보낸다.
message
값의 소유권 이동
send 이후 원래 스레드는 그 값을 더 이상 사용할 수 없다.
receiver
도착 순서대로 처리
스레드 스케줄에 따라 출력 순서는 매번 달라질 수 있다.
구조 의미 종료 조건
mpsc multiple producer, single consumer 구조다. 모든 송신 단말이 drop되면 수신 반복이 끝난다.
tx clone 생산자 수를 늘려 같은 수신자에게 보낸다. 복제본도 살아 있으면 채널은 열린 상태로 남는다.
send move 메시지는 공유가 아니라 소유권 이동으로 전달된다. 수신자가 값을 받은 뒤 안전하게 처리한다.
생산자는 여럿
여러 스레드가 같은 수신자를 향해 독립적으로 메시지를 보낼 수 있다.
소비자는 하나
수신 단말 하나가 메시지를 순차적으로 꺼낸다.
순서는 비결정적
도착 순서는 실행 환경과 sleep 타이밍에 따라 달라진다.