mirror of
https://github.com/esphome/esphome.git
synced 2025-08-06 18:37:47 +00:00
address review comments
This commit is contained in:
parent
b7fca5488a
commit
debef6fde4
@ -234,10 +234,12 @@ 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();
|
||||
std::unique_ptr<SchedulerItem> item;
|
||||
{
|
||||
LockGuard lock(this->lock_);
|
||||
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
|
||||
|
@ -143,6 +143,7 @@ class Scheduler {
|
||||
// Common implementation for cancel operations
|
||||
bool cancel_item_common_(Component *component, bool is_static_string, const void *name_ptr, SchedulerItem::Type type);
|
||||
|
||||
private:
|
||||
bool cancel_item_(Component *component, const std::string &name, SchedulerItem::Type type);
|
||||
bool cancel_item_(Component *component, const char *name, SchedulerItem::Type type);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user