# Poco

# class NamedMutex

Library: Foundation
Package: Processes
Header: Poco/NamedMutex.h

## Description

A NamedMutex (mutual exclusion) is a global synchronization mechanism used to control access to a shared resource in a concurrent (multi process) scenario. Using the ScopedLock class is the preferred way to automatically lock and unlock a mutex.

Unlike a Mutex or a FastMutex, which itself is the unit of synchronization, a NamedMutex refers to a named operating system resource being the unit of synchronization. In other words, there can be multiple instances of NamedMutex referring to the same actual synchronization object.

There should not be more than one instance of NamedMutex for a given name in a process. Otherwise, the instances may interfere with each other.

## Inheritance

Direct Base Classes: NamedMutexImpl

All Base Classes: NamedMutexImpl

## Member Summary

Member Functions: lock, tryLock, unlock

Inherited Functions: lockImpl, tryLockImpl, unlockImpl

## Types Aliases

### ScopedLock

using ScopedLock = Poco::ScopedLock < NamedMutex >;

### ScopedLockWithUnlock

using ScopedLockWithUnlock = Poco::ScopedLockWithUnlock < NamedMutex >;

## Constructors

### NamedMutex

NamedMutex(
const std::string & name
);

creates the Mutex.

## Destructor

### ~NamedMutex

~NamedMutex();

destroys the Mutex.

## Member Functions

### lock

void lock();

Locks the mutex. Blocks if the mutex is held by another process or thread.

### tryLock

bool tryLock();

Tries to lock the mutex. Returns false immediately if the mutex is already held by another process or thread. Returns true if the mutex was successfully locked.

### unlock

void unlock();

Unlocks the mutex so that it can be acquired by other threads.