1
0
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:
Bluemangoo 2026-04-24 13:12:03 +08:00
parent 46cf5cdf4b
commit cdf617b5c3
Signed by: Bluemangoo
GPG Key ID: F2F7E46880A1C4CF
2 changed files with 18 additions and 0 deletions

View File

@ -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();

View File

@ -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))
} }