annotate DEPENDENCIES/generic/include/boost/thread/poly_shared_lockable.hpp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 //////////////////////////////////////////////////////////////////////////////
Chris@16 2 //
Chris@16 3 // (C) Copyright Vicente J. Botet Escriba 2008-2009,2012. Distributed under the Boost
Chris@16 4 // Software License, Version 1.0. (See accompanying file
Chris@16 5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 6 //
Chris@16 7 // See http://www.boost.org/libs/thread for documentation.
Chris@16 8 //
Chris@16 9 //////////////////////////////////////////////////////////////////////////////
Chris@16 10
Chris@16 11 #ifndef BOOST_THREAD_POLY_SHARED_LOCKABLE_HPP
Chris@16 12 #define BOOST_THREAD_POLY_SHARED_LOCKABLE_HPP
Chris@16 13
Chris@16 14 #include <boost/thread/poly_lockable.hpp>
Chris@16 15 #include <boost/chrono/chrono.hpp>
Chris@16 16
Chris@16 17 namespace boost
Chris@16 18 {
Chris@16 19
Chris@16 20
Chris@16 21 //[shared_poly_lockable
Chris@16 22 class shared_poly_lockable: public timed_poly_lockable
Chris@16 23 {
Chris@16 24 public:
Chris@16 25 virtual ~shared_poly_lockable() = 0;
Chris@16 26
Chris@16 27 virtual void lock_shared() = 0;
Chris@16 28 virtual bool try_lock_shared() = 0;
Chris@16 29 virtual void unlock_shared() = 0;
Chris@16 30
Chris@16 31 virtual bool try_lock_shared_until(chrono::system_clock::time_point const & abs_time)=0;
Chris@16 32 virtual bool try_lock_shared_until(chrono::steady_clock::time_point const & abs_time)=0;
Chris@16 33 template <typename Clock, typename Duration>
Chris@16 34 bool try_lock_shared_until(chrono::time_point<Clock, Duration> const & abs_time)
Chris@16 35 {
Chris@16 36 return try_lock_shared_until(time_point_cast<Clock::time_point>(abs_time));
Chris@16 37 }
Chris@16 38
Chris@16 39 virtual bool try_lock_shared_for(chrono::nanoseconds const & relative_time)=0;
Chris@16 40 template <typename Rep, typename Period>
Chris@16 41 bool try_lock_shared_for(chrono::duration<Rep, Period> const & rel_time)
Chris@16 42 {
Chris@16 43 return try_lock_shared_for(duration_cast<Clock::duration>(rel_time));
Chris@16 44 }
Chris@16 45
Chris@16 46 };
Chris@16 47
Chris@16 48 //]
Chris@16 49
Chris@16 50 //[upgrade_poly_lockable
Chris@16 51 class upgrade_poly_lockable: public shared_poly_lockable
Chris@16 52 {
Chris@16 53 public:
Chris@16 54 virtual ~upgrade_poly_lockable() = 0;
Chris@16 55
Chris@16 56 virtual void lock_upgrade() = 0;
Chris@16 57 virtual bool try_lock_upgrade() = 0;
Chris@16 58 virtual void unlock_upgrade() = 0;
Chris@16 59
Chris@16 60 virtual bool try_lock_upgrade_until(chrono::system_clock::time_point const & abs_time)=0;
Chris@16 61 virtual bool try_lock_upgrade_until(chrono::steady_clock::time_point const & abs_time)=0;
Chris@16 62 template <typename Clock, typename Duration>
Chris@16 63 bool try_lock_upgrade_until(chrono::time_point<Clock, Duration> const & abs_time)
Chris@16 64 {
Chris@16 65 return try_lock_upgrade_until(time_point_cast<Clock::time_point>(abs_time));
Chris@16 66 }
Chris@16 67
Chris@16 68 virtual bool try_lock_upgrade_for(chrono::nanoseconds const & relative_time)=0;
Chris@16 69 template <typename Rep, typename Period>
Chris@16 70 bool try_lock_upgrade_for(chrono::duration<Rep, Period> const & rel_time)
Chris@16 71 {
Chris@16 72 return try_lock_upgrade_for(duration_cast<Clock::duration>(rel_time));
Chris@16 73 }
Chris@16 74
Chris@16 75 virtual bool try_unlock_shared_and_lock() = 0;
Chris@16 76
Chris@16 77 virtual bool try_unlock_shared_and_lock_until(chrono::system_clock::time_point const & abs_time)=0;
Chris@16 78 virtual bool try_unlock_shared_and_lock_until(chrono::steady_clock::time_point const & abs_time)=0;
Chris@16 79 template <typename Clock, typename Duration>
Chris@16 80 bool try_unlock_shared_and_lock_until(chrono::time_point<Clock, Duration> const & abs_time)
Chris@16 81 {
Chris@16 82 return try_unlock_shared_and_lock_until(time_point_cast<Clock::time_point>(abs_time));
Chris@16 83 }
Chris@16 84
Chris@16 85 virtual bool try_unlock_shared_and_lock_for(chrono::nanoseconds const & relative_time)=0;
Chris@16 86 template <typename Rep, typename Period>
Chris@16 87 bool try_unlock_shared_and_lock_for(chrono::duration<Rep, Period> const & rel_time)
Chris@16 88 {
Chris@16 89 return try_unlock_shared_and_lock_for(duration_cast<Clock::duration>(rel_time));
Chris@16 90 }
Chris@16 91
Chris@16 92 virtual void unlock_and_lock_shared() = 0;
Chris@16 93 virtual bool try_unlock_shared_and_lock_upgrade() = 0;
Chris@16 94
Chris@16 95 virtual bool try_unlock_shared_and_lock_upgrade_until(chrono::system_clock::time_point const & abs_time)=0;
Chris@16 96 virtual bool try_unlock_shared_and_lock_upgrade_until(chrono::steady_clock::time_point const & abs_time)=0;
Chris@16 97 template <typename Clock, typename Duration>
Chris@16 98 bool try_unlock_shared_and_lock_upgrade_until(chrono::time_point<Clock, Duration> const & abs_time)
Chris@16 99 {
Chris@16 100 return try_unlock_shared_and_lock_upgrade_until(time_point_cast<Clock::time_point>(abs_time));
Chris@16 101 }
Chris@16 102
Chris@16 103 virtual bool try_unlock_shared_and_lock_upgrade_for(chrono::nanoseconds const & relative_time)=0;
Chris@16 104 template <typename Rep, typename Period>
Chris@16 105 bool try_unlock_shared_and_lock_upgrade_for(chrono::duration<Rep, Period> const & rel_time)
Chris@16 106 {
Chris@16 107 return try_unlock_shared_and_lock_upgrade_for(duration_cast<Clock::duration>(rel_time));
Chris@16 108 }
Chris@16 109
Chris@16 110 virtual void unlock_and_lock_upgrade() = 0;
Chris@16 111 virtual void unlock_upgrade_and_lock() = 0;
Chris@16 112 virtual bool try_unlock_upgrade_and_lock() = 0;
Chris@16 113
Chris@16 114 virtual bool try_unlock_upgrade_and_lock_until(chrono::system_clock::time_point const & abs_time)=0;
Chris@16 115 virtual bool try_unlock_upgrade_and_lock_until(chrono::steady_clock::time_point const & abs_time)=0;
Chris@16 116 template <typename Clock, typename Duration>
Chris@16 117 bool try_unlock_upgrade_and_lock_until(chrono::time_point<Clock, Duration> const & abs_time)
Chris@16 118 {
Chris@16 119 return try_unlock_upgrade_and_lock_until(time_point_cast<Clock::time_point>(abs_time));
Chris@16 120 }
Chris@16 121
Chris@16 122 virtual bool try_unlock_upgrade_and_lock_for(chrono::nanoseconds const & relative_time)=0;
Chris@16 123 template <typename Rep, typename Period>
Chris@16 124 bool try_unlock_upgrade_and_lock_for(chrono::duration<Rep, Period> const & rel_time)
Chris@16 125 {
Chris@16 126 return try_unlock_upgrade_and_lock_for(duration_cast<Clock::duration>(rel_time));
Chris@16 127 }
Chris@16 128
Chris@16 129 virtual void unlock_upgrade_and_lock_shared() = 0;
Chris@16 130
Chris@16 131 };
Chris@16 132 //]
Chris@16 133
Chris@16 134 }
Chris@16 135 #endif