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;
}