Index: boost/detail/lwm_nop.hpp
===================================================================
--- boost/detail/lwm_nop.hpp	(revision 48989)
+++ boost/detail/lwm_nop.hpp	(working copy)
@@ -28,6 +28,9 @@
 public:
 
     typedef lightweight_mutex scoped_lock;
+    void lock() {}
+    bool try_lock() {return true;}
+    void unlock() {}
 };
 
 } // namespace detail
Index: boost/detail/lwm_win32_cs.hpp
===================================================================
--- boost/detail/lwm_win32_cs.hpp	(revision 48989)
+++ boost/detail/lwm_win32_cs.hpp	(working copy)
@@ -91,14 +91,29 @@
 
         explicit scoped_lock(lightweight_mutex & m): m_(m)
         {
-            EnterCriticalSection(&m_.cs_);
+            m_.lock();
         }
 
         ~scoped_lock()
         {
-            LeaveCriticalSection(&m_.cs_);
+            m_.unlock();
         }
     };
+
+    void lock()
+    {
+        EnterCriticalSection(&cs_);
+    }
+    
+    bool try_lock()
+    {
+        return TryEnterCriticalSection(&cs_);
+    }
+    
+    void unlock()
+    {
+        EnterCriticalSection(&cs_);
+    }
 };
 
 } // namespace detail
Index: boost/detail/lwm_pthreads.hpp
===================================================================
--- boost/detail/lwm_pthreads.hpp	(revision 48989)
+++ boost/detail/lwm_pthreads.hpp	(working copy)
@@ -60,23 +60,38 @@
     {
     private:
 
-        pthread_mutex_t & m_;
+        lightweight_mutex & m_;
 
         scoped_lock(scoped_lock const &);
         scoped_lock & operator=(scoped_lock const &);
 
     public:
 
-        scoped_lock(lightweight_mutex & m): m_(m.m_)
+        scoped_lock(lightweight_mutex & m): m_(m)
         {
-            pthread_mutex_lock(&m_);
+            m_.lock();
         }
 
         ~scoped_lock()
         {
-            pthread_mutex_unlock(&m_);
+            m_.unlock();
         }
     };
+
+    void lock()
+    {
+        pthread_mutex_lock(&m_);
+    }
+    
+    bool try_lock()
+    {
+        return pthread_mutex_trylock(&m_) == 0;
+    }
+    
+    void unlock()
+    {
+        pthread_mutex_unlock(&m_);
+    }
 };
 
 } // namespace detail
