task_system/sync_queue/
mod.rs

1use std::{
2    collections::VecDeque,
3    fmt::{Debug, Formatter},
4    sync::{Arc, Mutex, MutexGuard, PoisonError},
5};
6
7mod sender;
8mod system;
9
10/// A task system that can be used to send tasks to a thread pool.
11pub struct TaskSystem<T> {
12    interrupt: Arc<Mutex<bool>>,
13    queue: Arc<Mutex<VecDeque<T>>>,
14}
15
16/// Sender for a task system.
17pub struct TaskSender<T> {
18    refer: TaskSystem<T>,
19}
20
21fn send_task<T>(queue: &Arc<Mutex<VecDeque<T>>>, task: T) -> Result<(), PoisonError<MutexGuard<'_, VecDeque<T>>>> {
22    match queue.lock() {
23        Ok(mut o) => Ok(o.push_back(task)),
24        Err(e) => Err(e),
25    }
26}