]> granicus.if.org Git - icinga2/commitdiff
Fix workqueue dispatch.
authorGunnar Beutner <gunnar@beutner.name>
Wed, 18 Sep 2013 15:38:26 +0000 (17:38 +0200)
committerGunnar Beutner <gunnar@beutner.name>
Wed, 18 Sep 2013 15:38:40 +0000 (17:38 +0200)
lib/base/workqueue.cpp

index bc7a3b0c2dc822011424dd891d972d044af47869..01af5938ee21b05bc6a28fed1c0d660fcc13fcfd 100644 (file)
@@ -38,8 +38,10 @@ void WorkQueue::Enqueue(const WorkCallback& item)
        m_Items.push_back(item);
        m_CV.notify_all();
 
-       if (!m_Executing)
+       if (!m_Executing) {
+               m_Executing = true;
                Utility::QueueAsyncCallback(boost::bind(&WorkQueue::ExecuteItem, this));
+       }
 }
 
 void WorkQueue::Join(void)
@@ -59,7 +61,6 @@ void WorkQueue::Clear(void)
 void WorkQueue::ExecuteItem(void)
 {
        boost::mutex::scoped_lock lock(m_Mutex);
-       m_Executing = true;
 
        while (!m_Items.empty()) {
                try {