pub fn watch(
sender_lease: MemLease,
receiver_lease: MemLease,
base_offset: u64,
initial: &[u8],
) -> Result<(WatchSender, WatchReceiver)>Expand description
Create a watch channel pair (WatchSender, WatchReceiver) backed
by leased memory.
Initializes version to 0 and stores initial as the current value.
The sender can update the value with WatchSender::send; receivers
detect changes via WatchReceiver::changed and read with
WatchReceiver::recv.
sender_lease and receiver_lease must point to the same underlying
arena (or the same shared memory region) so that writes from the sender
are visible to the receiver.
ยงExample
use grafos_sync::watch;
use grafos_std::mem::MemBuilder;
let sl = MemBuilder::new().acquire().unwrap();
let rl = MemBuilder::new().acquire().unwrap();
let (sender, mut receiver) = watch(sl, rl, 0, b"hello").unwrap();
let val = receiver.recv().unwrap();
assert_eq!(&val, b"hello");
sender.send(b"world").unwrap();
assert!(receiver.changed().unwrap());
let val = receiver.recv().unwrap();
assert_eq!(&val, b"world");