mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes
m::upgrade_lock Struct Reference

#include <reader_writer_lock.hpp>

Inheritance diagram for m::upgrade_lock:
[legend]
Collaboration diagram for m::upgrade_lock:
[legend]

Public Member Functions

 upgrade_lock (reader_writer_mutex &rw_mutex)
 
 upgrade_lock (reader_writer_mutex &rw_mutex, std::defer_lock_t)
 
 upgrade_lock (reader_writer_mutex &rw_mutex, std::adopt_lock_t)
 
 upgrade_lock (const upgrade_lock &)=delete
 
 upgrade_lock (upgrade_lock &&other)=default
 
upgrade_lockoperator= (upgrade_lock &&)=default
 
bool owns_read_lock () const
 
write_lock upgrade ()
 Attempts to upgrade the read lock to a write lock.
 
void lock ()
 
void unlock ()
 

Protected Member Functions

bool owns_lock () const
 

Protected Attributes

std::reference_wrapper< reader_writer_mutexrw_mutex_
 
bool owns_lock_ {false}
 

Detailed Description

Definition at line 370 of file reader_writer_lock.hpp.

Constructor & Destructor Documentation

◆ upgrade_lock() [1/5]

m::upgrade_lock::upgrade_lock ( reader_writer_mutex rw_mutex)
inlineexplicit

Definition at line 372 of file reader_writer_lock.hpp.

References M_insist, and owns_read_lock().

◆ upgrade_lock() [2/5]

m::upgrade_lock::upgrade_lock ( reader_writer_mutex rw_mutex,
std::defer_lock_t   
)
inline

Definition at line 373 of file reader_writer_lock.hpp.

◆ upgrade_lock() [3/5]

m::upgrade_lock::upgrade_lock ( reader_writer_mutex rw_mutex,
std::adopt_lock_t   
)
inline

Definition at line 374 of file reader_writer_lock.hpp.

◆ upgrade_lock() [4/5]

m::upgrade_lock::upgrade_lock ( const upgrade_lock )
delete

◆ upgrade_lock() [5/5]

m::upgrade_lock::upgrade_lock ( upgrade_lock &&  other)
default

Member Function Documentation

◆ lock()

void m::read_lock::lock ( )
inline

Definition at line 337 of file reader_writer_lock.hpp.

◆ operator=()

upgrade_lock & m::upgrade_lock::operator= ( upgrade_lock &&  )
default

◆ owns_lock()

bool m::read_lock::owns_lock ( ) const
inlineinherited

◆ owns_read_lock()

bool m::upgrade_lock::owns_read_lock ( ) const
inline

Definition at line 380 of file reader_writer_lock.hpp.

References m::read_lock::owns_lock().

Referenced by upgrade(), and upgrade_lock().

◆ unlock()

void m::read_lock::unlock ( )
inline

Definition at line 338 of file reader_writer_lock.hpp.

◆ upgrade()

write_lock m::upgrade_lock::upgrade ( )
inline

Attempts to upgrade the read lock to a write lock.

Returns a write_lock on success. On failure, std::nullopt is returned and the held read lock is unlocked to prevent deadlocks.

See also
reader_writer_lock::upgrade()

Definition at line 391 of file reader_writer_lock.hpp.

References M_insist, m::read_lock::owns_lock_, owns_read_lock(), and m::read_lock::rw_mutex_.

Field Documentation

◆ owns_lock_

bool m::read_lock::owns_lock_ {false}
protectedinherited

◆ rw_mutex_

std::reference_wrapper<reader_writer_mutex> m::read_lock::rw_mutex_
protectedinherited

Definition at line 321 of file reader_writer_lock.hpp.

Referenced by m::read_lock::lock(), m::read_lock::unlock(), and upgrade().


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