mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-04-17 16:00:35 +08:00
fix(timer): optimize lock handling in add_task method
This commit is contained in:
parent
51a7b4fe75
commit
4c8673fcb2
@ -252,14 +252,13 @@ impl Timer {
|
|||||||
} // Locks are dropped here
|
} // Locks are dropped here
|
||||||
|
|
||||||
// Now perform async operations without holding locks
|
// 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 {
|
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) {
|
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);
|
logging_error!(Type::Timer, "Failed to add task for uid {}: {}", uid, e);
|
||||||
|
|
||||||
// Rollback on failure - remove from timer_map
|
// Rollback on failure - remove from timer_map
|
||||||
self.timer_map.write().remove(&uid);
|
timer_map.remove(&uid);
|
||||||
} else {
|
} else {
|
||||||
logging!(debug, Type::Timer, "Added task {} for uid {}", tid, uid);
|
logging!(debug, Type::Timer, "Added task {} for uid {}", tid, uid);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user