Base Framework
Public Types | Public Member Functions | List of all members
Lock Class Referenceabstract

Lock interface. More...

#include <base/concurrency/Lock.h>

Inherited by MutualExclusion, NISpinLock, ReadWriteLock, RecursiveMutualExclusion, and SpinLock.

Public Types

typedef ExclusiveSynchronize< LockSync
 

Public Member Functions

 Lock () noexcept
 
virtual void exclusiveLock () const =0
 
virtual bool tryExclusiveLock () const =0
 
virtual void sharedLock () const =0
 
virtual bool trySharedLock () const =0
 
virtual void releaseLock () const =0
 
virtual ~Lock ()
 

Detailed Description

Lock interface.

This interface is implemented by classes used to synchronize contexts of execution by locking/unlocking.

Version
1.0

Constructor & Destructor Documentation

◆ Lock()

Lock::Lock ( )
inlinenoexcept

Initializes lock.

◆ ~Lock()

virtual Lock::~Lock ( )
virtual

Destroy lock.

Member Function Documentation

◆ exclusiveLock()

virtual void Lock::exclusiveLock ( ) const
pure virtual

Acquires an exclusive lock.

Implemented in RecursiveSpinLock, SpinLock, NISpinLock, ReadWriteLock, MutualExclusion, and RecursiveMutualExclusion.

◆ releaseLock()

virtual void Lock::releaseLock ( ) const
pure virtual

◆ sharedLock()

virtual void Lock::sharedLock ( ) const
pure virtual

Acquires a shared lock. For some lock implementations this will acquire an exclusive lock.

Implemented in RecursiveSpinLock, SpinLock, NISpinLock, MutualExclusion, ReadWriteLock, and RecursiveMutualExclusion.

◆ tryExclusiveLock()

virtual bool Lock::tryExclusiveLock ( ) const
pure virtual

Tries to acquire an exclusive lock.

Returns
True on success.

Implemented in RecursiveSpinLock, SpinLock, NISpinLock, MutualExclusion, ReadWriteLock, and RecursiveMutualExclusion.

◆ trySharedLock()

virtual bool Lock::trySharedLock ( ) const
pure virtual

Tries to acquire a shared lock. For some lock implementations this will acquire an exclusive lock.

Returns
True on success.

Implemented in RecursiveSpinLock, SpinLock, NISpinLock, MutualExclusion, RecursiveMutualExclusion, and ReadWriteLock.