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
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
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
void unlock();
Unlocks the mutex so that it can be acquired by other threads.