Allow for completely lock-free access to Static values, and closed channels.

This commit is contained in:
CordlessCoder 2025-09-17 01:34:54 +01:00
parent 061a45eaa8
commit 3a3cfa8a3b
No known key found for this signature in database
GPG key ID: EDAF0AEF0E77DE04
6 changed files with 35 additions and 20 deletions

View file

@ -1,5 +1,8 @@
use arc_swap::ArcSwap;
use crate::sync::traits::{ChannelError, ChannelReceiver, ChannelSender, ChannelType};
use crate::types;
use std::sync::Arc;
#[cfg(feature = "sync-std")]
use std::sync::mpsc;
@ -60,10 +63,11 @@ impl<T> StdSuck<T> {
let (request_tx, request_rx) = StdChannel::create_request_channel();
let (response_tx, response_rx) = StdChannel::create_response_channel::<T>();
let state = std::sync::Arc::new(std::sync::Mutex::new(crate::types::ValueSource::None));
let state = Arc::new(crate::types::ValueSource::None);
let state = ArcSwap::new(state);
let sucker = crate::Sucker::new(request_tx, response_rx);
let sourcer = crate::Sourcer::new(request_rx, response_tx, std::sync::Arc::clone(&state));
let sourcer = crate::Sourcer::new(request_rx, response_tx, state);
(sucker, sourcer)
}