diff options
author | Carl Lerche <me@carllerche.com> | 2020-09-11 15:14:45 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-11 15:14:45 -0700 |
commit | 2bc9a4815259c8ff4daa5e24f128ec826970d17f (patch) | |
tree | c075e4d97a145ce104cfc8ee39d8d06acece5c13 /tokio/src/sync/tests/loom_watch.rs | |
parent | c5a9ede157691ac5ca15283735bd666c6b016188 (diff) |
sync: tweak `watch` API (#2814)
Decouples getting the latest `watch` value from receiving the change
notification. The `Receiver` async method becomes
`Receiver::changed()`. The latest value is obtained from
`Receiver::borrow()`.
The implementation is updated to use `Notify`. This requires adding
`Notify::notify_waiters`. This method is generally useful but is kept
private for now.
Diffstat (limited to 'tokio/src/sync/tests/loom_watch.rs')
-rw-r--r-- | tokio/src/sync/tests/loom_watch.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tokio/src/sync/tests/loom_watch.rs b/tokio/src/sync/tests/loom_watch.rs new file mode 100644 index 00000000..7944cab8 --- /dev/null +++ b/tokio/src/sync/tests/loom_watch.rs @@ -0,0 +1,20 @@ +use crate::sync::watch; + +use loom::future::block_on; +use loom::thread; + +#[test] +fn smoke() { + loom::model(|| { + let (tx, mut rx) = watch::channel(1); + + let th = thread::spawn(move || { + tx.send(2).unwrap(); + }); + + block_on(rx.changed()).unwrap(); + assert_eq!(*rx.borrow(), 2); + + th.join().unwrap(); + }) +} |