LINUX.ORG.RU

История изменений

Исправление pon4ik, (текущая версия) :

bool process_tasks(DeadlineT& when) {
  auto now = std::chrono::high_resolution_clock::now();
  auto minimum = now;

  auto erase = std::remove_if(tasks_.begin(), tasks_.end(),
                              [&now, &minimum](auto& task) -> bool {
                                if (task.deadline_ <= now) {
                                  auto reschedule_to = task.trigger_();
                                  if (reschedule_to == MicrosecondsT(0)) {
                                    return true;
                                  } else {
                                    task.deadline_ = now + reschedule_to;
                                  }
                                }
                                minimum = std::min(task.deadline_, minimum);
                                return false;
                              });

  tasks_.erase(erase, tasks_.end());

  when = minimum;
  return !tasks_.empty();

Исходная версия pon4ik, :


bool process_tasks(DeadlineT& when) {
  auto now = std::chrono::high_resolution_clock::now();
  auto minimum = now;

  auto erase = std::remove_if(tasks_.begin(), tasks_.end(),
                              [&now, &minimum](auto& task) -> bool {
                                if (task.deadline_ <= now) {
                                  auto reschedule_to = task.trigger_();
                                  if (reschedule_to == MicrosecondsT(0)) {
                                    return true;
                                  } else {
                                    task.deadline_ = now + reschedule_to;
                                  }
                                }
                                minimum = std::min(task.deadline_, minimum);
                                return false;
                              });

  tasks_.erase(erase, tasks_.end());

  when = minimum;
  return !tasks_.empty();
[\code]