XRootD
XrdSsiMutex Class Reference

#include <XrdSsiAtomics.hh>

+ Collaboration diagram for XrdSsiMutex:

Public Types

enum  MutexType {
  Simple = 0 ,
  Recursive = 1
}
 

Public Member Functions

 XrdSsiMutex (MutexType mt=Simple)
 
 ~XrdSsiMutex ()
 
void Lock ()
 
bool TryLock ()
 
void UnLock ()
 

Protected Attributes

pthread_mutex_t cs
 

Detailed Description

Definition at line 109 of file XrdSsiAtomics.hh.

Member Enumeration Documentation

◆ MutexType

Enumerator
Simple 
Recursive 

Definition at line 119 of file XrdSsiAtomics.hh.

119 {Simple = 0, Recursive = 1};

Constructor & Destructor Documentation

◆ XrdSsiMutex()

XrdSsiMutex::XrdSsiMutex ( MutexType  mt = Simple)
inline

Definition at line 121 of file XrdSsiAtomics.hh.

122  {int rc;
123  if (mt == Simple) rc = pthread_mutex_init(&cs, NULL);
124  else {pthread_mutexattr_t attr;
125  if (!(rc = pthread_mutexattr_init(&attr)))
126  {pthread_mutexattr_settype(&attr,
127  PTHREAD_MUTEX_RECURSIVE);
128  rc = pthread_mutex_init(&cs, &attr);
129  }
130  }
131  if (rc) throw Errno2Text(rc);
132  }
pthread_mutex_t cs

References cs, and Simple.

◆ ~XrdSsiMutex()

XrdSsiMutex::~XrdSsiMutex ( )
inline

Definition at line 134 of file XrdSsiAtomics.hh.

134 {pthread_mutex_destroy(&cs);}

References cs.

Member Function Documentation

◆ Lock()

void XrdSsiMutex::Lock ( )
inline

Definition at line 115 of file XrdSsiAtomics.hh.

115 {pthread_mutex_lock(&cs);}

References cs.

Referenced by XrdSsiMutexMon::XrdSsiMutexMon(), XrdSsiResponder::~XrdSsiResponder(), XrdSsiRRTable< T >::Add(), XrdSsiResponder::BindRequest(), XrdSsiRRTable< T >::Clear(), XrdSsiEvent::ClrEvent(), XrdSsiRequest::Finished(), XrdSsiSessReal::Lock(), XrdSsiMutexMon::Lock(), XrdSsiRRAgent::ResetResponder(), XrdSsiResponder::SetMetadata(), and XrdSsiResponder::UnBindRequest().

+ Here is the caller graph for this function:

◆ TryLock()

bool XrdSsiMutex::TryLock ( )
inline

Definition at line 113 of file XrdSsiAtomics.hh.

113 {return pthread_mutex_trylock( &cs ) == 0;}

References cs.

◆ UnLock()

void XrdSsiMutex::UnLock ( )
inline

Definition at line 117 of file XrdSsiAtomics.hh.

117 {pthread_mutex_unlock(&cs);}

References cs.

Referenced by XrdSsiResponder::~XrdSsiResponder(), XrdSsiRRTable< T >::Add(), XrdSsiResponder::BindRequest(), XrdSsiRRTable< T >::Clear(), XrdSsiEvent::ClrEvent(), XrdSsiRequest::Finished(), XrdSsiMutexMon::Lock(), XrdSsiRRAgent::ResetResponder(), XrdSsiResponder::SetMetadata(), XrdSsiResponder::UnBindRequest(), XrdSsiMutexMon::UnLock(), and XrdSsiSessReal::UnLock().

+ Here is the caller graph for this function:

Member Data Documentation

◆ cs

pthread_mutex_t XrdSsiMutex::cs
protected

Definition at line 138 of file XrdSsiAtomics.hh.

Referenced by XrdSsiMutex(), ~XrdSsiMutex(), Lock(), TryLock(), and UnLock().


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