mod support { pubmod signal;
} use support::signal::send_signal;
use tokio::runtime::Runtime; use tokio::signal::unix::{signal, SignalKind};
use std::sync::mpsc::channel; use std::thread;
#[test] fn multi_loop() { // An "ordinary" (non-future) channel let (sender, receiver) = channel(); // Run multiple times, to make sure there are no race conditions for _ in0..10 { // Run multiple event loops, each one in its own thread let threads: Vec<_> = (0..4)
.map(|_| { let sender = sender.clone();
thread::spawn(move || { let rt = rt(); let _ = rt.block_on(async { letmut signal = signal(SignalKind::hangup()).unwrap();
sender.send(()).unwrap();
signal.recv().await
});
})
})
.collect(); // Wait for them to declare they're ready for &_ in threads.iter() {
receiver.recv().unwrap();
} // Send a signal
send_signal(libc::SIGHUP); // Make sure the threads terminated correctly for t in threads {
t.join().unwrap();
}
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.