use crossbeam::channel::{Sender, unbounded};
use std::thread;
#[derive(Clone)]
pub struct Bgdrop {
sender: Sender<Box<dyn Send>>,
}
impl Bgdrop {
pub fn new() -> Self {
let (sender, receiver) = unbounded::<Box<dyn Send>>();
thread::spawn(move || {
for _value in receiver {
}
});
Bgdrop { sender }
}
pub fn with_threads(num_threads: usize) -> Self {
let (sender, receiver) = unbounded::<Box<dyn Send>>();
for _ in 0..num_threads {
let receiver = receiver.clone();
thread::spawn(move || {
for _value in receiver {
}
});
}
Bgdrop { sender }
}
pub fn drop<T: Send + 'static>(&self, value: T) {
let _ = self.sender.send(Box::new(value));
}
}