diff thread/AsynchronousTask.h @ 293:2fc2a6768777

* Fix race condition
author Chris Cannam <c.cannam@qmul.ac.uk>
date Mon, 18 May 2009 15:44:03 +0000
parents b97f4f926f48
children 6afa0e011f74
line wrap: on
line diff
--- a/thread/AsynchronousTask.h	Thu May 14 12:45:08 2009 +0000
+++ b/thread/AsynchronousTask.h	Mon May 18 15:44:03 2009 +0000
@@ -68,6 +68,7 @@
         m_todo.unlock();
     }
     void awaitTask() {
+        m_done.lock();
         while (m_inTask) m_done.wait();
         m_done.unlock();
     }
@@ -82,6 +83,8 @@
                 m_todo.wait();
             }
             if (m_finishing) {
+                m_inTask = false;
+                m_done.signal();
                 break;
             }
             if (m_inTask) {