pub struct WaitQueue {
tasks: TaskQueue,
lock: RawSpinLock,
}Expand description
等待队列结构体 用于管理等待某些事件的任务列表 提供将任务加入等待队列、从队列中唤醒任务等功能 内部使用任务队列和自旋锁来保证线程安全 使用示例:
ⓘ
let mut wait_queue = WaitQueue::new();
wait_queue.sleep(task); // 将任务加入等待队列并阻塞
wait_queue.wake_up(&task); // 唤醒指定任务
wait_queue.wake_up_one(); // 唤醒队首任务
wait_queue.wake_up_all(); // 唤醒所有任务Fields§
§tasks: TaskQueue§lock: RawSpinLockImplementations§
Source§impl WaitQueue
impl WaitQueue
Sourcepub fn wake_up_one(&mut self)
pub fn wake_up_one(&mut self)
唤醒队首一个任务:在临界区内 pop,然后在临界区外唤醒
Sourcepub fn wake_up_all(&mut self)
pub fn wake_up_all(&mut self)
唤醒队列中所有任务:一次性把要唤醒的任务收集出来,释放锁后逐个唤醒
Sourcepub fn remove_task(&mut self, task: &Arc<SpinLock<Task>>)
pub fn remove_task(&mut self, task: &Arc<SpinLock<Task>>)
从等待队列中移除指定任务(不唤醒)