Index: boost/thread/win32/condition_variable.hpp
===================================================================
--- boost/thread/win32/condition_variable.hpp	(revision 44580)
+++ boost/thread/win32/condition_variable.hpp	(working copy)
@@ -231,9 +231,9 @@
         
             void notify_one()
             {
+                boost::mutex::scoped_lock internal_lock(internal_mutex);
                 if(detail::interlocked_read_acquire(&total_count))
                 {
-                    boost::mutex::scoped_lock internal_lock(internal_mutex);
                     if(!total_count)
                     {
                         return;
@@ -271,9 +271,9 @@
         
             void notify_all()
             {
+                boost::mutex::scoped_lock internal_lock(internal_mutex);
                 if(detail::interlocked_read_acquire(&total_count))
                 {
-                    boost::mutex::scoped_lock internal_lock(internal_mutex);
                     long waiting_count=total_count;
                     
                     wake_waiters(total_count);
