File: lockable_adapter.qbk

package info (click to toggle)
boost1.55 1.55.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 487,824 kB
  • ctags: 673,349
  • sloc: cpp: 2,098,430; xml: 106,036; ansic: 46,744; python: 32,427; sh: 11,864; cs: 2,121; asm: 1,640; makefile: 984; perl: 714; yacc: 456; php: 132; fortran: 43; sql: 13; csh: 6
file content (117 lines) | stat: -rw-r--r-- 3,579 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
[/
  (C) Copyright 2008-2013 Vicente J. Botet Escriba
  Distributed under the Boost Software License, Version 1.0.
  (See accompanying file LICENSE_1_0.txt or copy at
  http://www.boost.org/LICENSE_1_0.txt).
]

[/==========================================================================================]
[section:lockable_adapter_hpp Header `<boost/thread/lockable_adapter.hpp>`]
[/==========================================================================================]

    namespace boost {
        template <typename Lockable> class basic_lockable_adapter;
        template <typename Lockable> class lockable_adapter;
        template <typename TimedLock> class timed_lockable_adapter;
        template <typename SharableLock> class shared_lockable_adapter;
        template <typename UpgradableLock> class upgrade_lockable_adapter;
    }

[section Template Class `basic_lockable_adapter<>`]

    template <typename Lockable>
    class basic_lockable_adapter {
    public:
        basic_lockable_adapter(basic_lockable_adapter const&) = delete
        basic_lockable_adapter& opearator=(basic_lockable_adapter const&) = delete

        typedef Lockable mutex_type;

        basic_lockable_adapter() {}
        void lock();
        void unlock();
        bool try_lock();
    };

[endsect]
[section Template Class `lockable_adapter<>`]

    template <typename Lockable>
    class lockable_adapter : : public basic_lockable_adapter<Lockable> {
    public:
        lockable_adapter() {}

        bool try_lock();
    };

[endsect]

[section Template Class `timed_lockable_adapter<>`]

    template <typename TimedLock>
    class timed_lockable_adapter : public lockable_adapter<TimedLock> {
    public:
        timed_lockable_adapter() {}

        bool try_lock_until(system_time const & abs_time);
        template<typename TimeDuration>
        bool try_lock_for(TimeDuration const & relative_time);
        
        void lock_until(system_time const & abs_time);
        template<typename TimeDuration>
        void lock_for(TimeDuration const & relative_time);
    };

[endsect]
[section Template Class `shared_lockable_adapter<>`]

    template <typename SharableLock>
    class shared_lockable_adapter : public timed_lockable_adapter<SharableLock>     {
    public:
        shared_lockable_adapter() {}
        void lock_shared();
        bool try_lock_shared();
        void unlock_shared();

        bool try_lock_shared_until(system_time const& t);
        template<typename TimeDuration>   
        bool try_lock_shared_for(TimeDuration const& t);
        
        template<typename TimeDuration>   
        void lock_shared_for(TimeDuration const& t);
        void lock_shared_until(system_time const& t);
    };


[endsect]
[section Template Class `upgrade_lockable_adapter<>`]

    template <typename UpgradableLock>
    class upgrade_lockable_adapter : public shared_lockable_adapter<UpgradableLock>{
    public:
        upgrade_lockable_adapter();

        void lock_upgrade();
        bool try_lock_upgrade();
        void unlock_upgrade();

        void unlock_upgrade_and_lock();
        void unlock_and_lock_upgrade();
        void unlock_and_lock_shared();
        void unlock_upgrade_and_lock_shared();
        
        bool try_lock_upgrade_until(system_time const&t);
        template<typename TimeDuration>   
        bool try_lock_upgrade_for(TimeDuration const&t);
        void lock_upgrade_until(system_time const&t);
        template<typename TimeDuration>   
        void lock_upgrade_for(TimeDuration const&t);
    };



[endsect]
[endsect]