45 void JobQueue::addJob(
const std::function<
void()>& job) {
46 boost::unique_lock<boost::mutex> ulock(jobs_mutex_);
50 void JobQueue::clear() {
54 size_t JobQueue::numPending() {
55 boost::unique_lock<boost::mutex> ulock(jobs_mutex_);
59 void JobQueue::waitForAllJobs() {
60 boost::unique_lock<boost::mutex> ulock(jobs_mutex_);
61 while (!jobs_.empty())
62 idle_condition_.wait(ulock);
65 void JobQueue::executeJobs() {
66 boost::unique_lock<boost::mutex> ulock(jobs_mutex_);
67 while (!jobs_.empty()) {
68 std::function<void()> fn = jobs_.front();
73 }
catch (std::exception& ex) {
74 ROS_ERROR(
"Exception caught executing main loop job: %s", ex.what());
78 idle_condition_.notify_all();