24 const 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()) {
35 const auto&
top = delayed_tasks_.top();
36 if (!
top.time.has_value() ||
top.time.value() > now) {
39 immediate_tasks_.push(
top);
44 if (!immediate_tasks_.empty()) {
45 auto task = immediate_tasks_.front();
46 immediate_tasks_.pop();
51 if (!delayed_tasks_.empty()) {
52 const auto&
top = delayed_tasks_.top();
53 if (
top.time.has_value()) {
54 return top.time.value() - now;
59 return std::monostate{};