let jh = thread::spawn(move || {
tx.send(1).unwrap();
tx.send(2).unwrap();
tx.send(3).unwrap();
});
// Stop at the first value we are called at. letmut stopped_at = usize::MAX; let returned = *block_on(rx.wait_for(|x| {
stopped_at = *x; true
}))
.unwrap();
// Check that it returned the same value as the one we returned // `true` for.
assert_eq!(stopped_at, returned);
jh.join().unwrap();
});
}
#[test] fn multiple_sender_drop_concurrently() {
loom::model(move || { let (tx1, rx) = watch::channel(0); let tx2 = tx1.clone();
let jh = thread::spawn(move || {
drop(tx2);
});
assert!(rx.has_changed().is_ok());
drop(tx1);
jh.join().unwrap();
// Check if all sender are dropped and closed flag is set.
assert!(rx.has_changed().is_err());
});
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.19 Sekunden
(vorverarbeitet am 2026-08-27)
¤
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.