Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
useMutex.H File Reference

RAII-style wrapper for POSIX mutexes. More...

#include <pthread.h>
#include <errno.h>
#include <ahDefs.H>
#include <ahUtils.H>
#include <ah-errors.H>
Include dependency graph for useMutex.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  UseMutex
 RAII-style mutex lock guard. More...
 

Macros

#define CTOR_USE_MUTEX(name, mutex)   name(mutex)
 For member initializer lists.
 
#define CTOR_INH_USE_MUTEX(mutex)   UseMutex(mutex)
 For base class initialization in derived classes.
 
#define USE_MUTEX(name, mutex)   UseMutex name(mutex)
 Declare a named UseMutex guard.
 
#define CRITICAL_SECTION(mutex)   UseMutex critical_section(mutex)
 Create an anonymous critical section guard.
 

Functions

void init_mutex (pthread_mutex_t *)
 Initialize a pthread mutex (pointer version)
 
void init_mutex (pthread_mutex_t &)
 Initialize a pthread mutex (reference version)
 
void destroy_mutex (pthread_mutex_t *)
 Destroy a pthread mutex (pointer version)
 
void destroy_mutex (pthread_mutex_t &)
 Destroy a pthread mutex (reference version)
 

Detailed Description

RAII-style wrapper for POSIX mutexes.

This file provides utilities for working with POSIX mutexes in a C++ RAII style, ensuring automatic lock release and simplifying critical section management.

Features

  • RAII locking: Automatic lock on construction, unlock on destruction
  • Explicit control: Manual lock/unlock methods when needed
  • Unlock suppression: Option to skip automatic unlock
  • Convenience macros: Easy critical section definition

Classes

Utility Functions

Usage Example

pthread_mutex_t mutex;
init_mutex(&mutex);
// Method 1: RAII in block scope
{
UseMutex guard(&mutex);
// ... critical section ...
} // Automatically unlocked
// Method 2: Using macro
{
// ... critical section ...
}
// Method 3: Manual control
UseMutex guard(&mutex);
guard.disallow_unlock(); // Don't unlock on destruction
// ... transfer to another context ...
destroy_mutex(&mutex);
RAII-style mutex lock guard.
Definition useMutex.H:142
void init_mutex(pthread_mutex_t *m)
Initialize a pthread mutex (pointer version)
Definition useMutex.C:41
void destroy_mutex(pthread_mutex_t *m)
Destroy a pthread mutex (pointer version)
Definition useMutex.C:54
#define CRITICAL_SECTION(mutex)
Create an anonymous critical section guard.
Definition useMutex.H:233

Macros

Note
Consider using std::lock_guard or std::unique_lock for modern C++.
See also
useCondVar.H For condition variable support
Author
Leandro Rabindranath León *

Definition in file useMutex.H.

Macro Definition Documentation

◆ CRITICAL_SECTION

#define CRITICAL_SECTION (   mutex)    UseMutex critical_section(mutex)

Create an anonymous critical section guard.

Definition at line 233 of file useMutex.H.

◆ CTOR_INH_USE_MUTEX

#define CTOR_INH_USE_MUTEX (   mutex)    UseMutex(mutex)

For base class initialization in derived classes.

Definition at line 225 of file useMutex.H.

◆ CTOR_USE_MUTEX

#define CTOR_USE_MUTEX (   name,
  mutex 
)    name(mutex)

For member initializer lists.

Definition at line 221 of file useMutex.H.

◆ USE_MUTEX

#define USE_MUTEX (   name,
  mutex 
)    UseMutex name(mutex)

Declare a named UseMutex guard.

Definition at line 229 of file useMutex.H.

Function Documentation

◆ destroy_mutex() [1/2]

void destroy_mutex ( pthread_mutex_t &  m)
extern

Destroy a pthread mutex (reference version)

Definition at line 62 of file useMutex.C.

References destroy_mutex().

◆ destroy_mutex() [2/2]

void destroy_mutex ( pthread_mutex_t *  m)
extern

Destroy a pthread mutex (pointer version)

Definition at line 54 of file useMutex.C.

References ah_domain_error_if, Aleph::maps(), and Aleph::to_string().

Referenced by Log_Manager::~Log_Manager(), and destroy_mutex().

◆ init_mutex() [1/2]

void init_mutex ( pthread_mutex_t &  m)
extern

Initialize a pthread mutex (reference version)

Definition at line 49 of file useMutex.C.

References init_mutex().

◆ init_mutex() [2/2]

void init_mutex ( pthread_mutex_t *  m)
extern

Initialize a pthread mutex (pointer version)

Definition at line 41 of file useMutex.C.

References ah_domain_error_if, Aleph::maps(), and Aleph::to_string().

Referenced by Log_Manager::Log_Manager(), and init_mutex().