Poco

class FastMutex

Library: Foundation
Package: Threading
Header: Poco/Mutex.h

Description

A FastMutex (mutual exclusion) is similar to a Mutex. Unlike a Mutex, however, a FastMutex is not recursive, which means that a deadlock will occur if the same thread tries to lock a mutex it has already locked again. Locking a FastMutex is faster than locking a recursive Mutex. Using the ScopedLock class is the preferred way to automatically lock and unlock a mutex.

Inheritance

Direct Base Classes: FastMutexImpl

All Base Classes: FastMutexImpl

Member Summary

Member Functions: lock, tryLock, unlock

Types Aliases

ScopedLock

using ScopedLock = Poco::ScopedLock < FastMutex >;

ScopedLockWithUnlock

using ScopedLockWithUnlock = Poco::ScopedLockWithUnlock < FastMutex >;

Constructors

FastMutex

FastMutex();

creates the Mutex.

Destructor

~FastMutex

~FastMutex();

destroys the Mutex.

Member Functions

lock inline

void lock();

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

lock

void lock(
    long milliseconds
);

Locks the mutex. Blocks up to the given number of milliseconds if the mutex is held by another thread. Throws a TimeoutException if the mutex can not be locked within the given timeout.

Performance Note: On most platforms (including Windows), this member function is implemented using a loop calling (the equivalent of) tryLock() and Thread::sleep(). On POSIX platforms that support pthread_mutex_timedlock(), this is used.

tryLock inline

bool tryLock();

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

tryLock

bool tryLock(
    long milliseconds
);

Locks the mutex. Blocks up to the given number of milliseconds if the mutex is held by another thread. Returns true if the mutex was successfully locked.

Performance Note: On most platforms (including Windows), this member function is implemented using a loop calling (the equivalent of) tryLock() and Thread::sleep(). On POSIX platforms that support pthread_mutex_timedlock(), this is used.

unlock inline

void unlock();

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