mirror of
https://github.com/Bluemangoo/sekai-unpacker.git
synced 2026-05-06 20:44:47 +08:00
fix task clear
This commit is contained in:
parent
46cf5cdf4b
commit
cdf617b5c3
@ -103,6 +103,23 @@ impl<T> SharedQueue<T> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn clear(&self) {
|
||||||
|
let mut queue = self.inner.data.lock().unwrap();
|
||||||
|
|
||||||
|
let removed_count = queue.len();
|
||||||
|
|
||||||
|
if removed_count > 0 {
|
||||||
|
queue.clear();
|
||||||
|
|
||||||
|
let prev_pending = self.inner.pending.fetch_sub(removed_count, Ordering::SeqCst);
|
||||||
|
|
||||||
|
if prev_pending == removed_count {
|
||||||
|
self.inner.done_cond.notify_all();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// 阻塞当前线程,直到所有在途任务(pending == 0)全部处理完
|
/// 阻塞当前线程,直到所有在途任务(pending == 0)全部处理完
|
||||||
pub fn wait_until_all_consumed(&self) {
|
pub fn wait_until_all_consumed(&self) {
|
||||||
let mut _queue_lock = self.inner.data.lock().unwrap();
|
let mut _queue_lock = self.inner.data.lock().unwrap();
|
||||||
|
|||||||
@ -55,6 +55,7 @@ pub async fn post_run(
|
|||||||
return Ok(None);
|
return Ok(None);
|
||||||
}
|
}
|
||||||
cnt.reset();
|
cnt.reset();
|
||||||
|
queue.clear();
|
||||||
queue.push_all(tasks);
|
queue.push_all(tasks);
|
||||||
Ok(Some(id))
|
Ok(Some(id))
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user