mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-28 07:14:40 +08:00
fix(timer): optimize lock handling in add_task method
This commit is contained in:
@@ -252,14 +252,13 @@ impl Timer {
|
||||
} // Locks are dropped here
|
||||
|
||||
// Now perform async operations without holding locks
|
||||
let delay_timer = self.delay_timer.write();
|
||||
let mut timer_map = self.timer_map.write();
|
||||
for (uid, tid, interval) in operations_to_add {
|
||||
// Re-acquire locks for individual operations
|
||||
let delay_timer = self.delay_timer.write();
|
||||
if let Err(e) = self.add_task(&delay_timer, uid.clone(), tid, interval) {
|
||||
logging_error!(Type::Timer, "Failed to add task for uid {}: {}", uid, e);
|
||||
|
||||
// Rollback on failure - remove from timer_map
|
||||
self.timer_map.write().remove(&uid);
|
||||
timer_map.remove(&uid);
|
||||
} else {
|
||||
logging!(debug, Type::Timer, "Added task {} for uid {}", tid, uid);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user