[RUST/COMMON] MPSC 채널 메커니즘을 사용해 스레드 간 데이터 공유하기
■ MPSC 채널 메커니즘을 사용해 스레드 간 데이터 공유하기 ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
use std::sync::mpsc; use std::thread; use std::time; fn send_message(source_message : &str, sender : mpsc::Sender<String>) { let message_array : [&str; 5] = ["메시지 1", "메시지 2", "메시지 3", "메시지 4", "메시지 5"]; for message in message_array { let target_message : String = format!("{} : {}", source_message, message); sender.send(target_message).unwrap(); thread::sleep(time::Duration::from_millis(1000)); } sender.send("중단".to_string()).unwrap(); } fn main() { let (tx, rx) = mpsc::channel::<String>(); let sender1 : mpsc::Sender<String> = tx.clone(); thread::spawn(|| { send_message("스레드 1", sender1); }); let sender2 : mpsc::Sender<String> = tx.clone(); thread::spawn(|| { send_message("스레드 2", sender2) }); loop { let message : String = rx.recv().unwrap(); println!("[수신] {}", message); if message == "중단" { break; } } } /* [수신] 스레드 1 : 메시지 1 [수신] 스레드 2 : 메시지 1 [수신] 스레드 2 : 메시지 2 [수신] 스레드 1 : 메시지 2 [수신] 스레드 1 : 메시지 3 [수신] 스레드 2 : 메시지 3 [수신] 스레드 1 : 메시지 4 [수신] 스레드 2 : 메시지 4 [수신] 스레드 1 : 메시지 5 [수신] 스레드 2 : 메시지 5 [수신] 중단 */ |