message-passing

Message Passing

안전한 동시성을 보장하기 위한 접근법, 스레드들이 서로 데이터를 담은 메시지를 보내서 통신하도록 한다.

Example

  • mpsc: multi producer, single consumer
    • tx를 .clone()을 통해서 복제 가능
  • tx: transmitter, rx: receiver
use std::sync::mpsc;
use std::thread;

fn main() {
    let (tx, rx) = mpsc::channel();
}

send

  • send 메서드로 메시지를 전송
  • Result 타입을 반환 (전송에 실패하면 Err를 반환)
tx.send(message).unwrap();

receive

  • recv: receive, 스레드를 멈추고 기다림
  • try_recv: 대기 없이 즉시 Result를 반환