Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
17 #ifndef ATHCONTAINERS_THREADING_H
18 #define ATHCONTAINERS_THREADING_H
21 #ifdef ATHCONTAINERS_NO_THREADS
36 class recursive_mutex {};
42 template <
class LOCKABLE>
47 lock_guard(LOCKABLE&) {}
62 operator T()
const {
return m_val; }
63 atomic& operator= (
const T&
val) { m_val =
val;
return *
this; }
73 #else // not ATHCONTAINERS_NO_THREADS
77 #ifndef BOOST_SYSTEM_NO_DEPRECATED
78 #define BOOST_SYSTEM_NO_DEPRECATED 1
92 using std::recursive_mutex;
93 using std::lock_guard;
113 #endif // not ATHCONTAINERS_NO_THREADS
126 template <
typename LOCKABLE>
175 template <
class LOCKABLE>
224 #endif // not ATHCONTAINERS_THREADING_H
void fence_acq_rel()
An acquire/release fence.
upgrading_lock(upgrading_lock const &)
~upgrading_lock()
Release the held lock.
strict_shared_lock(const lockable_type &obj)
Take out a shared lock on obj and remember it.
upgrading_lock(lockable_type &obj)
Take out an upgrade lock on obj and remember it.
strict_shared_lock(lockable_type &obj)
Take out a shared lock on obj and remember it.
strict_shared_lock(strict_shared_lock const &)
void fence_seq_cst()
A sequentially-consistent fence.
LOCKABLE lockable_type
The underlying object type.
Lock object for taking out shared locks.
void upgrade()
Convert the lock from upgrade to exclusive.
~strict_shared_lock()
Release the held lock.
upgrading_lock & operator=(upgrading_lock const &)
LOCKABLE lockable_type
The underlying object type.
lockable_type & m_obj
The lock being held.
Lock object for taking out upgradable locks.
lockable_type & m_obj
The lock being held.
bool m_exclusive
Has the lock been converted to exclusive?
strict_shared_lock & operator=(strict_shared_lock const &)