여러 송신자가 값을 이동시키고 하나의 수신자가 순서 없이 받는다
송신 단말을 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 타이밍에 따라 달라진다.