]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // Copyright (C) 2012 Vicente J. Botet Escriba |
2 | // | |
3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying | |
4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
5 | ||
6 | // <boost/thread/locks.hpp> | |
7 | ||
8 | // template <class Mutex> class unlock_guard; | |
9 | ||
10 | // unlock_guard(unlock_guard const&) = delete; | |
11 | ||
12 | #include <boost/thread/reverse_lock.hpp> | |
13 | #include <boost/thread/lock_types.hpp> | |
14 | #include <boost/thread/mutex.hpp> | |
15 | #include <boost/thread/thread.hpp> | |
16 | #include <boost/detail/lightweight_test.hpp> | |
17 | ||
18 | ||
19 | int main() | |
20 | { | |
21 | { | |
22 | boost::mutex m; | |
23 | boost::unique_lock<boost::mutex> lk(m); | |
24 | BOOST_TEST(lk.owns_lock()); | |
25 | BOOST_TEST(lk.mutex()==&m); | |
26 | ||
27 | { | |
28 | boost::reverse_lock<boost::unique_lock<boost::mutex> > lg(lk); | |
29 | BOOST_TEST(!lk.owns_lock()); | |
30 | BOOST_TEST(lk.mutex()==0); | |
31 | } | |
32 | BOOST_TEST(lk.owns_lock()); | |
33 | BOOST_TEST(lk.mutex()==&m); | |
34 | } | |
35 | ||
36 | { | |
37 | boost::mutex m; | |
38 | boost::unique_lock<boost::mutex> lk(m, boost::defer_lock); | |
39 | BOOST_TEST(! lk.owns_lock()); | |
40 | BOOST_TEST(lk.mutex()==&m); | |
41 | { | |
42 | boost::reverse_lock<boost::unique_lock<boost::mutex> > lg(lk); | |
43 | BOOST_TEST(!lk.owns_lock()); | |
44 | BOOST_TEST(lk.mutex()==0); | |
45 | } | |
46 | BOOST_TEST(lk.owns_lock()); | |
47 | BOOST_TEST(lk.mutex()==&m); | |
48 | } | |
49 | ||
50 | ||
51 | return boost::report_errors(); | |
52 | } |