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}