tinyio_core/runtime/
tq.rs

1use std::sync::Arc;
2
3use crossbeam::queue::SegQueue;
4
5use crate::runtime::task::Task;
6
7#[derive(Clone, Debug, Default)]
8pub struct TaskQueue {
9    queue: Arc<SegQueue<Arc<Task>>>,
10}
11
12impl TaskQueue {
13    pub fn new() -> Self {
14        Default::default()
15    }
16
17    pub fn pop(&self) -> Option<Arc<Task>> {
18        self.queue.pop()
19    }
20
21    pub fn push(&self, task: Arc<Task>) {
22        self.queue.push(task);
23    }
24}