boost::optional pop_task()

in include/SpartaWorkQueue.h [153:166]


  boost::optional<Input> pop_task(SpartaWorkerState<Input>* other) {
    std::lock_guard<std::mutex> guard(m_queue_mtx);
    if (!m_queue.empty()) {
      other->set_running(true);
      if (m_queue.size() == 1) {
        assert(m_state_counters->num_non_empty > 0);
        --m_state_counters->num_non_empty;
      }
      auto task = std::move(m_queue.front());
      m_queue.pop();
      return task;
    }
    return boost::none;
  }