mirror of
https://github.com/callumio/suck.git
synced 2025-12-17 03:29:21 +00:00
Allow for completely lock-free access to Static values, and closed channels.
This commit is contained in:
parent
bb5950cd76
commit
016fe5302d
6 changed files with 35 additions and 20 deletions
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue