|
66 | 66 | //! use std::thread; |
67 | 67 | //! use std::sync::mpmc::channel; |
68 | 68 | //! |
69 | | -//! // Create a shared channel that can be sent along from many threads |
70 | | -//! // where tx is the sending half (tx for transmission), and rx is the receiving |
71 | | -//! // half (rx for receiving). |
72 | | -//! let (tx, rx) = channel(); |
73 | | -//! for i in 0..10 { |
74 | | -//! let tx = tx.clone(); |
75 | | -//! thread::spawn(move || { |
76 | | -//! tx.send(i).unwrap(); |
77 | | -//! }); |
78 | | -//! } |
| 69 | +//! thread::scope(|s| { |
| 70 | +//! // Create a shared channel that can be sent along from many threads |
| 71 | +//! // where tx is the sending half (tx for transmission), and rx is the receiving |
| 72 | +//! // half (rx for receiving). |
| 73 | +//! let (tx, rx) = channel(); |
| 74 | +//! for i in 0..10 { |
| 75 | +//! let tx = tx.clone(); |
| 76 | +//! s.spawn(move || { |
| 77 | +//! tx.send(i).unwrap(); |
| 78 | +//! }); |
| 79 | +//! } |
79 | 80 | //! |
80 | | -//! for _ in 0..5 { |
81 | | -//! let rx1 = rx.clone(); |
82 | | -//! let rx2 = rx.clone(); |
83 | | -//! thread::spawn(move || { |
84 | | -//! let j = rx1.recv().unwrap(); |
85 | | -//! assert!(0 <= j && j < 10); |
86 | | -//! }); |
87 | | -//! thread::spawn(move || { |
88 | | -//! let j = rx2.recv().unwrap(); |
89 | | -//! assert!(0 <= j && j < 10); |
90 | | -//! }); |
91 | | -//! } |
| 81 | +//! for _ in 0..5 { |
| 82 | +//! let rx1 = rx.clone(); |
| 83 | +//! let rx2 = rx.clone(); |
| 84 | +//! s.spawn(move || { |
| 85 | +//! let j = rx1.recv().unwrap(); |
| 86 | +//! assert!(0 <= j && j < 10); |
| 87 | +//! }); |
| 88 | +//! s.spawn(move || { |
| 89 | +//! let j = rx2.recv().unwrap(); |
| 90 | +//! assert!(0 <= j && j < 10); |
| 91 | +//! }); |
| 92 | +//! } |
| 93 | +//! }) |
92 | 94 | //! ``` |
93 | 95 | //! |
94 | 96 | //! Propagating panics: |
|
0 commit comments