24 std::lock_guard<std::mutex> lock(mutex_);
26 if (!immediate_tasks_.empty()) {
27 auto task = immediate_tasks_.front();
28 immediate_tasks_.pop();
33 auto now = std::chrono::steady_clock::now();
34 while (!delayed_tasks_.empty() && delayed_tasks_.top().time.value() <= now) {
35 immediate_tasks_.push(delayed_tasks_.top());
40 if (!immediate_tasks_.empty()) {
41 auto task = immediate_tasks_.front();
42 immediate_tasks_.pop();
47 if (!delayed_tasks_.empty()) {
48 return delayed_tasks_.top().time.value() - now;
52 return std::monostate{};