lockable_adapter.qbk 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. [/
  2. (C) Copyright 2008-2013 Vicente J. Botet Escriba
  3. Distributed under the Boost Software License, Version 1.0.
  4. (See accompanying file LICENSE_1_0.txt or copy at
  5. http://www.boost.org/LICENSE_1_0.txt).
  6. ]
  7. [/==========================================================================================]
  8. [section:lockable_adapter_hpp Header `<boost/thread/lockable_adapter.hpp>`]
  9. [/==========================================================================================]
  10. namespace boost {
  11. template <typename Lockable> class basic_lockable_adapter;
  12. template <typename Lockable> class lockable_adapter;
  13. template <typename TimedLock> class timed_lockable_adapter;
  14. template <typename SharableLock> class shared_lockable_adapter;
  15. template <typename UpgradableLock> class upgrade_lockable_adapter;
  16. }
  17. [section Template Class `basic_lockable_adapter<>`]
  18. template <typename Lockable>
  19. class basic_lockable_adapter {
  20. public:
  21. basic_lockable_adapter(basic_lockable_adapter const&) = delete
  22. basic_lockable_adapter& opearator=(basic_lockable_adapter const&) = delete
  23. typedef Lockable mutex_type;
  24. basic_lockable_adapter() {}
  25. void lock();
  26. void unlock();
  27. bool try_lock();
  28. };
  29. [endsect]
  30. [section Template Class `lockable_adapter<>`]
  31. template <typename Lockable>
  32. class lockable_adapter : : public basic_lockable_adapter<Lockable> {
  33. public:
  34. lockable_adapter() {}
  35. bool try_lock();
  36. };
  37. [endsect]
  38. [section Template Class `timed_lockable_adapter<>`]
  39. template <typename TimedLock>
  40. class timed_lockable_adapter : public lockable_adapter<TimedLock> {
  41. public:
  42. timed_lockable_adapter() {}
  43. bool try_lock_until(system_time const & abs_time);
  44. template<typename TimeDuration>
  45. bool try_lock_for(TimeDuration const & relative_time);
  46. void lock_until(system_time const & abs_time);
  47. template<typename TimeDuration>
  48. void lock_for(TimeDuration const & relative_time);
  49. };
  50. [endsect]
  51. [section Template Class `shared_lockable_adapter<>`]
  52. template <typename SharableLock>
  53. class shared_lockable_adapter : public timed_lockable_adapter<SharableLock> {
  54. public:
  55. shared_lockable_adapter() {}
  56. void lock_shared();
  57. bool try_lock_shared();
  58. void unlock_shared();
  59. bool try_lock_shared_until(system_time const& t);
  60. template<typename TimeDuration>
  61. bool try_lock_shared_for(TimeDuration const& t);
  62. template<typename TimeDuration>
  63. void lock_shared_for(TimeDuration const& t);
  64. void lock_shared_until(system_time const& t);
  65. };
  66. [endsect]
  67. [section Template Class `upgrade_lockable_adapter<>`]
  68. template <typename UpgradableLock>
  69. class upgrade_lockable_adapter : public shared_lockable_adapter<UpgradableLock>{
  70. public:
  71. upgrade_lockable_adapter();
  72. void lock_upgrade();
  73. bool try_lock_upgrade();
  74. void unlock_upgrade();
  75. void unlock_upgrade_and_lock();
  76. void unlock_and_lock_upgrade();
  77. void unlock_and_lock_shared();
  78. void unlock_upgrade_and_lock_shared();
  79. bool try_lock_upgrade_until(system_time const&t);
  80. template<typename TimeDuration>
  81. bool try_lock_upgrade_for(TimeDuration const&t);
  82. void lock_upgrade_until(system_time const&t);
  83. template<typename TimeDuration>
  84. void lock_upgrade_for(TimeDuration const&t);
  85. };
  86. [endsect]
  87. [endsect]