# Lock2 Class Reference

Ephemeral double mutex locking object. More...

`#include <yateclass.h>`

List of all members.

## Public Member Functions

| Lock2 (Mutex *mx1, Mutex *mx2, long maxwait=-1)
| Lock2 (Mutex &mx1, Mutex &mx2, long maxwait=-1)
| ~Lock2 ()
bool | locked () const
bool | lock (Mutex *mx1, Mutex *mx2, long maxwait=-1)
bool | lock (Mutex &mx1, Mutex &mx2, long maxwait=-1)
void | drop ()

## Detailed Description

Ephemeral double mutex locking object.

A dual lock is a stack allocated (automatic) object that locks a pair of mutexes on creation and unlocks them on destruction. The mutexes are always locked in the same order to prevent trivial deadlocks

## Constructor & Destructor Documentation

Lock2 | ( | Mutex * | mx1,
|  | Mutex * | mx2,
|  | long | maxwait = `-1` |
| ) |  |  | `[inline]`

Create the dual lock, try to lock each mutex

Parameters:

  | mx1 | Pointer to the first mutex to lock
  | mx2 | Pointer to the second mutex to lock
  | maxwait | Time in microseconds to wait for each mutex, -1 wait forever

Lock2 | ( | Mutex & | mx1,
|  | Mutex & | mx2,
|  | long | maxwait = `-1` |
| ) |  |  | `[inline]`

Create the dual lock, try to lock each mutex

Parameters:

  | mx1 | Reference to the first mutex to lock
  | mx2 | Reference to the second mutex to lock
  | maxwait | Time in microseconds to wait for each mutex, -1 wait forever

~Lock2 | ( |  | ) | `[inline]`

Destroy the lock, unlock the mutex if it was locked

## Member Function Documentation

bool locked | ( |  | ) | const`[inline]`

Check if the locking succeeded

Returns:
  True if all mutexes were locked

bool lock | ( | Mutex * | mx1,
|  | Mutex * | mx2,
|  | long | maxwait = `-1` |
| ) |  |  |

Lock in a new pair of mutexes. Any existing locks are dropped

Parameters:

  | mx1 | Pointer to the first mutex to lock
  | mx2 | Pointer to the second mutex to lock
  | maxwait | Time in microseconds to wait for each mutex, -1 wait forever

Returns:
  True on success - non-NULL mutexes locked

bool lock | ( | Mutex & | mx1,
|  | Mutex & | mx2,
|  | long | maxwait = `-1` |
| ) |  |  | `[inline]`

Lock in a new pair of mutexes

Parameters:

  | mx1 | Reference to the first mutex to lock
  | mx2 | Reference to the second mutex to lock
  | maxwait | Time in microseconds to wait for each mutex, -1 wait forever

Returns:
  True on success - both locked

void drop | ( |  | ) |

Unlock both mutexes if they were locked and drop the references

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

- yateclass.h