LLDB mainline
lldb_private::Guarded< T, Mutex > Class Template Reference

Bundles a value of type T with the Mutex that guards it. More...

#include <Locked.h>

Inheritance diagram for lldb_private::Guarded< T, Mutex >:
[legend]

Public Member Functions

 Guarded ()=default
 Guarded (T value)
 Guarded (const Guarded &)=delete
Guardedoperator= (const Guarded &)=delete
LockedPtr< T, Mutex > Lock ()
 Exclusive (read/write) access to the value.
SharedLockedPtr< T, Mutex > LockShared () const
 Shared (read-only) access to the value.

Private Attributes

Mutex m_mutex
m_value {}

Detailed Description

template<typename T, typename Mutex = llvm::sys::RWMutex>
class lldb_private::Guarded< T, Mutex >

Bundles a value of type T with the Mutex that guards it.

This class prevents accidential use of a value without aquiring the lock and should be preferred over a member + mutex pair.

Mutex must satisfy Lockable when calling Lock() and SharedLockable when calling LockShared().

Definition at line 178 of file Locked.h.

Constructor & Destructor Documentation

◆ Guarded() [1/3]

template<typename T, typename Mutex = llvm::sys::RWMutex>
lldb_private::Guarded< T, Mutex >::Guarded ( )
default

Referenced by Guarded(), and operator=().

◆ Guarded() [2/3]

template<typename T, typename Mutex = llvm::sys::RWMutex>
lldb_private::Guarded< T, Mutex >::Guarded ( T value)
inlineexplicit

Definition at line 181 of file Locked.h.

References m_value.

◆ Guarded() [3/3]

template<typename T, typename Mutex = llvm::sys::RWMutex>
lldb_private::Guarded< T, Mutex >::Guarded ( const Guarded< T, Mutex > & )
delete

References Guarded().

Member Function Documentation

◆ Lock()

template<typename T, typename Mutex = llvm::sys::RWMutex>
LockedPtr< T, Mutex > lldb_private::Guarded< T, Mutex >::Lock ( )
inline

Exclusive (read/write) access to the value.

Definition at line 187 of file Locked.h.

References m_mutex, and m_value.

◆ LockShared()

template<typename T, typename Mutex = llvm::sys::RWMutex>
SharedLockedPtr< T, Mutex > lldb_private::Guarded< T, Mutex >::LockShared ( ) const
inline

Shared (read-only) access to the value.

Definition at line 190 of file Locked.h.

References m_mutex, and m_value.

◆ operator=()

template<typename T, typename Mutex = llvm::sys::RWMutex>
Guarded & lldb_private::Guarded< T, Mutex >::operator= ( const Guarded< T, Mutex > & )
delete

References Guarded().

Member Data Documentation

◆ m_mutex

template<typename T, typename Mutex = llvm::sys::RWMutex>
Mutex lldb_private::Guarded< T, Mutex >::m_mutex
mutableprivate

Definition at line 195 of file Locked.h.

Referenced by Lock(), and LockShared().

◆ m_value

template<typename T, typename Mutex = llvm::sys::RWMutex>
T lldb_private::Guarded< T, Mutex >::m_value {}
private

Definition at line 196 of file Locked.h.

Referenced by Guarded(), Lock(), and LockShared().


The documentation for this class was generated from the following file: