Update scheduler.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
J. Nick Koston 2025-07-04 13:46:39 -05:00 committed by GitHub
parent b7fca5488a
commit 0cda83d29c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -234,10 +234,11 @@ void HOT Scheduler::call() {
// The outer check is done without a lock for performance. If the queue
// appears non-empty, we lock and process an item. We don't need to check
// empty() again inside the lock because only this thread can remove items.
this->lock_.lock();
auto item = std::move(this->defer_queue_.front());
this->defer_queue_.pop_front();
this->lock_.unlock();
{
LockGuard lock(this->lock_);
auto item = std::move(this->defer_queue_.front());
this->defer_queue_.pop_front();
}
// Execute callback without holding lock to prevent deadlocks
// if the callback tries to call defer() again