doc.rust-lang.org/std/sync/mpsc
Preview meta tags from the doc.rust-lang.org website.
Linked Hostnames
1General Meta Tags
6- titlestd::sync::mpsc - Rust
- charsetutf-8
- viewportwidth=device-width, initial-scale=1.0
- generatorrustdoc
- descriptionMulti-producer, single-consumer FIFO queue communication primitives.
Link Tags
4- alternate icon../../../static.files/favicon-32x32-6580c154.png
- icon../../../static.files/favicon-044be391.svg
- stylesheet../../../static.files/normalize-9960930a.css
- stylesheet../../../static.files/rustdoc-1a91846b.css
Links
5- https://play.rust-lang.org/?code=%23!%5Ballow(unused)%5D%0Afn+main()+%7B%0A++++use+std::sync::mpsc::channel;%0A++++%0A++++//+The+call+to+recv()+will+return+an+error+because+the+channel+has+already%0A++++//+hung+up+(or+been+deallocated)%0A++++let+(tx,+rx)+=+channel::%3Ci32%3E();%0A++++drop(tx);%0A++++assert!(rx.recv().is_err());%0A%7D&edition=2024
- https://play.rust-lang.org/?code=%23!%5Ballow(unused)%5D%0Afn+main()+%7B%0A++++use+std::sync::mpsc::sync_channel;%0A++++use+std::thread;%0A++++%0A++++let+(tx,+rx)+=+sync_channel(3);%0A++++%0A++++for+_+in+0..3+%7B%0A++++++++//+It+would+be+the+same+without+thread+and+clone+here%0A++++++++//+since+there+will+still+be+one+%60tx%60+left.%0A++++++++let+tx+=+tx.clone();%0A++++++++//+cloned+tx+dropped+within+thread%0A++++++++thread::spawn(move+%7C%7C+tx.send(%22ok%22).unwrap());%0A++++%7D%0A++++%0A++++//+Drop+the+last+sender+to+stop+%60rx%60+waiting+for+message.%0A++++//+The+program+will+not+complete+if+we+comment+this+out.%0A++++//+**All**+%60tx%60+needs+to+be+dropped+for+%60rx%60+to+have+%60Err%60.%0A++++drop(tx);%0A++++%0A++++//+Unbounded+receiver+waiting+for+all+senders+to+complete.%0A++++while+let+Ok(msg)+=+rx.recv()+%7B%0A++++++++println!(%22%7Bmsg%7D%22);%0A++++%7D%0A++++%0A++++println!(%22completed%22);%0A%7D&edition=2024
- https://play.rust-lang.org/?code=%23!%5Ballow(unused)%5D%0Afn+main()+%7B%0A++++use+std::thread;%0A++++use+std::sync::mpsc::channel;%0A++++%0A++++//+Create+a+shared+channel+that+can+be+sent+along+from+many+threads%0A++++//+where+tx+is+the+sending+half+(tx+for+transmission),+and+rx+is+the+receiving%0A++++//+half+(rx+for+receiving).%0A++++let+(tx,+rx)+=+channel();%0A++++for+i+in+0..10+%7B%0A++++++++let+tx+=+tx.clone();%0A++++++++thread::spawn(move+%7C%7C+%7B%0A++++++++++++tx.send(i).unwrap();%0A++++++++%7D);%0A++++%7D%0A++++%0A++++for+_+in+0..10+%7B%0A++++++++let+j+=+rx.recv().unwrap();%0A++++++++assert!(0+%3C=+j+%26%26+j+%3C+10);%0A++++%7D%0A%7D&edition=2024
- https://play.rust-lang.org/?code=%23!%5Ballow(unused)%5D%0Afn+main()+%7B%0A++++use+std::thread;%0A++++use+std::sync::mpsc::channel;%0A++++%0A++++//+Create+a+simple+streaming+channel%0A++++let+(tx,+rx)+=+channel();%0A++++thread::spawn(move+%7C%7C+%7B%0A++++++++tx.send(10).unwrap();%0A++++%7D);%0A++++assert_eq!(rx.recv().unwrap(),+10);%0A%7D&edition=2024
- https://play.rust-lang.org/?code=%23!%5Ballow(unused)%5D%0Afn+main()+%7B%0A++++use+std::thread;%0A++++use+std::sync::mpsc::sync_channel;%0A++++%0A++++let+(tx,+rx)+=+sync_channel::%3Ci32%3E(0);%0A++++thread::spawn(move+%7C%7C+%7B%0A++++++++//+This+will+wait+for+the+parent+thread+to+start+receiving%0A++++++++tx.send(53).unwrap();%0A++++%7D);%0A++++rx.recv().unwrap();%0A%7D&edition=2024