diff Core/MultiThreading/BagOfRunnablesBySteps.cpp @ 431:16b52fb8d034

fix by cyril paulus
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 11 May 2013 12:19:20 +0200
parents bdd72233b105
children 2d0a347e8cfc
line wrap: on
line diff
--- a/Core/MultiThreading/BagOfRunnablesBySteps.cpp	Wed May 08 15:16:13 2013 +0200
+++ b/Core/MultiThreading/BagOfRunnablesBySteps.cpp	Sat May 11 12:19:20 2013 +0200
@@ -102,7 +102,11 @@
         assert(t.get() != NULL);
         assert(bag->pimpl_->activeThreads_.find(r.get()) == bag->pimpl_->activeThreads_.end());
 
-        t->join();
+        if (t->joinable())
+        {
+          t->join();
+        }
+
         bag->pimpl_->oneThreadIsJoined_.notify_one();
       }
 
@@ -128,7 +132,11 @@
     // Stop the finish listener
     pimpl_->stopFinishListener_ = true;
     pimpl_->oneThreadIsStopped_.notify_one();  // Awakens the listener
-    pimpl_->finishListener_->join();
+
+    if (pimpl_->finishListener_->joinable())
+    {
+      pimpl_->finishListener_->join();
+    }
   }