From 01f93931cb5681d07cc83a59271d2efdb96f0845 Mon Sep 17 00:00:00 2001 From: Anthony Williams Date: Wed, 14 Jun 2006 07:31:13 +0000 Subject: [PATCH] timed_mutex and recursive_timed_mutex have scoped_locks [SVN r34298] --- include/boost/thread/win32/mutex.hpp | 8 ++++++++ include/boost/thread/win32/recursive_mutex.hpp | 8 ++++++++ test/test_lock_concept.cpp | 2 ++ 3 files changed, 18 insertions(+) diff --git a/include/boost/thread/win32/mutex.hpp b/include/boost/thread/win32/mutex.hpp index eed19b34..28ae79f7 100644 --- a/include/boost/thread/win32/mutex.hpp +++ b/include/boost/thread/win32/mutex.hpp @@ -231,6 +231,10 @@ namespace boost void lock() { + if(locked()) + { + throw boost::lock_error(); + } m.lock(); is_locked=true; } @@ -247,6 +251,10 @@ namespace boost void unlock() { + if(!locked()) + { + throw boost::lock_error(); + } m.unlock(); is_locked=false; } diff --git a/include/boost/thread/win32/recursive_mutex.hpp b/include/boost/thread/win32/recursive_mutex.hpp index 5dff4be4..51bcc5f4 100644 --- a/include/boost/thread/win32/recursive_mutex.hpp +++ b/include/boost/thread/win32/recursive_mutex.hpp @@ -211,6 +211,10 @@ namespace boost void lock() { + if(locked()) + { + throw boost::lock_error(); + } m.lock(); is_locked=true; } @@ -227,6 +231,10 @@ namespace boost void unlock() { + if(!locked()) + { + throw boost::lock_error(); + } m.unlock(); is_locked=false; } diff --git a/test/test_lock_concept.cpp b/test/test_lock_concept.cpp index 0f2f0298..c8803133 100644 --- a/test/test_lock_concept.cpp +++ b/test/test_lock_concept.cpp @@ -134,8 +134,10 @@ boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[]) add_tests_for_scoped_lock_concept(test); add_tests_for_scoped_lock_concept(test); + add_tests_for_scoped_lock_concept(test); add_tests_for_scoped_lock_concept(test); add_tests_for_scoped_lock_concept(test); + add_tests_for_scoped_lock_concept(test); add_tests_for_scoped_try_lock_concept(test); add_tests_for_scoped_try_lock_concept(test);