[#BloombergLP-bslmt]
= xref:BloombergLP.adoc[BloombergLP]::bslmt
:relfileprefix: ../
:mrdocs:

Package namespace for multithreading components&period;

== Types

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslmt/Barrier.adoc[`Barrier`] 
| This class defines a thread barrier&period;
| xref:BloombergLP/bslmt/ChronoUtil.adoc[`ChronoUtil`] 
| This `struct` provides a namespace for utility functions that operate on `bsl&colon;&colon;chrono` facilities&period;
| xref:BloombergLP/bslmt/Condition.adoc[`Condition`] 
| This `class` implements a portable inter&hyphen;thread signaling primitive&period;
| xref:BloombergLP/bslmt/ConditionImpl-02.adoc[`ConditionImpl`] 
| Platform&hyphen;specific condition variable implementation&period;
| xref:BloombergLP/bslmt/Configuration.adoc[`Configuration`] 
| Namespace for utilities that manage default `bslmt` configuration values&period;
| xref:BloombergLP/bslmt/EntryPointFunctorAdapter.adoc[`EntryPointFunctorAdapter`] 
| Adapter holding a copy of an invokable object and its allocator&period;
| xref:BloombergLP/bslmt/EntryPointFunctorAdapterUtil.adoc[`EntryPointFunctorAdapterUtil`] 
| Utility functions for `EntryPointFunctorAdapter`&period;
| xref:BloombergLP/bslmt/EntryPointFunctorAdapter_Base.adoc[`EntryPointFunctorAdapter&lowbar;Base`] 
| This component&hyphen;private type provides a non&hyphen;templated view of `EntryPointFunctorAdapter` for accessing the invoker function&period; Do not use outside this component&period;
| xref:BloombergLP/bslmt/FastPostSemaphore.adoc[`FastPostSemaphore`] 
| This class implements a semaphore type, optimized for `post`, for thread synchronization&period;
| xref:BloombergLP/bslmt/FastPostSemaphoreImpl.adoc[`FastPostSemaphoreImpl`] 
| This class implements a semaphore type, optimized for `post`, for thread synchronization&period;
| xref:BloombergLP/bslmt/FastPostSemaphoreImplWorkaroundUtil.adoc[`FastPostSemaphoreImplWorkaroundUtil`] 
| This class provides utility functions for workarounds to system level issues for `FastPostSemaphoreImpl`&period;
| xref:BloombergLP/bslmt/Latch.adoc[`Latch`] 
| Provide a single&hyphen;use thread synchronization mechanism on an event count&period;
| xref:BloombergLP/bslmt/LockGuard.adoc[`LockGuard`] 
| This class template implements a guard for acquisition and release of synchronization resources (i&period;e&period;, locks)&period;
| xref:BloombergLP/bslmt/LockGuardTryLock.adoc[`LockGuardTryLock`] 
| This class template implements a guard for tentative acquisition and release of synchronization resources (i&period;e&period;, locks)&period;
| xref:BloombergLP/bslmt/LockGuardUnlock.adoc[`LockGuardUnlock`] 
| This class template implements a guard for release and reacquisition of synchronization resources (i&period;e&period;, locks)&period;
| xref:BloombergLP/bslmt/LockReadGuard.adoc[`LockReadGuard`] 
| DEPRECATED&colon; Use `ReadLockGuard` instead&period;
| xref:BloombergLP/bslmt/LockWriteGuard.adoc[`LockWriteGuard`] 
| DEPRECATED&colon; Use `WriteLockGuard` instead&period;
| xref:BloombergLP/bslmt/MeteredMutex.adoc[`MeteredMutex`] 
| Mutex that tracks cumulative hold time and wait time&period;
| xref:BloombergLP/bslmt/Mutex.adoc[`Mutex`] 
| Portable wrapper of an OS&hyphen;level mutex for intra&hyphen;process synchronization&period;
| xref:BloombergLP/bslmt/MutexImpl-09.adoc[`MutexImpl`] 
| Primary template for platform&hyphen;specific mutex implementations&period;
| xref:BloombergLP/bslmt/Once.adoc[`Once`] 
| Gate&hyphen;keeper class for code that should only execute once per process&period;
| xref:BloombergLP/bslmt/OnceGuard.adoc[`OnceGuard`] 
| Guard class for using `Once` safely&period;
| xref:BloombergLP/bslmt/Platform.adoc[`Platform`] 
| This `struct` provides a namespace for concurrency trait definitions&period;
| xref:BloombergLP/bslmt/QLock.adoc[`QLock`] 
| Small, statically&hyphen;initializable mutex for serialized resource access&period;
| xref:BloombergLP/bslmt/QLockGuard.adoc[`QLockGuard`] 
| Guard that acquires and releases a lock on a `QLock` object&period;
| xref:BloombergLP/bslmt/QLock_EventFlag.adoc[`QLock&lowbar;EventFlag`] 
| &lsqb;*PRIVATE*&rsqb;Thread&hyphen;safe flag for signaling an event between two threads&period;
| xref:BloombergLP/bslmt/RWMutex.adoc[`RWMutex`] 
| Platform&hyphen;independent interface to a reader&hyphen;writer mutex&period;
| xref:BloombergLP/bslmt/RWMutexImpl-0d.adoc[`RWMutexImpl`] 
| Platform&hyphen;specific implementation of a readers&hyphen;writer mutex&period;
| xref:BloombergLP/bslmt/ReadLockGuard.adoc[`ReadLockGuard`] 
| This class template implements a guard for acquisition and release of read synchronization resources (i&period;e&period;, reader locks)&period;
| xref:BloombergLP/bslmt/ReadLockGuardTryLock.adoc[`ReadLockGuardTryLock`] 
| This class template implements a guard for tentative acquisition and release of read synchronization resources (i&period;e&period;, reader locks)&period;
| xref:BloombergLP/bslmt/ReadLockGuardUnlock.adoc[`ReadLockGuardUnlock`] 
| This class template implements a guard for release and reacquisition of read synchronization resources (i&period;e&period;, reader locks)&period;
| xref:BloombergLP/bslmt/ReaderWriterLock.adoc[`ReaderWriterLock`] 
| This class provides a multi&hyphen;reader&sol;single&hyphen;writer lock mechanism&period;
| xref:BloombergLP/bslmt/ReaderWriterMutex.adoc[`ReaderWriterMutex`] 
| This class provides a multi&hyphen;reader&sol;single&hyphen;writer lock mechanism&period;
| xref:BloombergLP/bslmt/ReaderWriterMutexImpl.adoc[`ReaderWriterMutexImpl`] 
| This class provides a multi&hyphen;reader&sol;single&hyphen;writer lock mechanism&period;
| xref:BloombergLP/bslmt/RecursiveMutex.adoc[`RecursiveMutex`] 
| Recursive mutex that can be locked multiple times by the same thread&period;
| xref:BloombergLP/bslmt/RecursiveMutexImpl-0a.adoc[`RecursiveMutexImpl`] 
| Platform&hyphen;specific recursive mutex implementation (forward declaration)&period;
| xref:BloombergLP/bslmt/RecursivemutexImpl-02.adoc[`RecursivemutexImpl`] 
| Platform&hyphen;specific recursive mutex implementation (forward declaration)&period;
| xref:BloombergLP/bslmt/SaturatedTimeConversionImpUtil.adoc[`SaturatedTimeConversionImpUtil`] 
| Utility for saturating conversions between time representations&period;
| xref:BloombergLP/bslmt/Semaphore.adoc[`Semaphore`] 
| This class implements a portable semaphore type for thread synchronization&period; It forwards all requests to an appropriate platform&hyphen;specific implementation&period;
| xref:BloombergLP/bslmt/SemaphoreImpl-0a.adoc[`SemaphoreImpl`] 
| 
| xref:BloombergLP/bslmt/Sluice.adoc[`Sluice`] 
| This class controls the release of threads from a common synchronization point&period;
| xref:BloombergLP/bslmt/TestUtil.adoc[`TestUtil`] 
| This `struct` provides a namespace for a suite of utility functions that facilitate the creation of BDE&hyphen;style test drivers&period;
| xref:BloombergLP/bslmt/TestUtil_Guard.adoc[`TestUtil&lowbar;Guard`] 
| This `class` defines an object that provides exclusive access to the critical sections defined by this component&apos;s macros&period;
| xref:BloombergLP/bslmt/ThreadAttributes.adoc[`ThreadAttributes`] 
| This simply constrained (value&hyphen;semantic) attribute class characterizes a collection of thread attribute values&period;
| xref:BloombergLP/bslmt/ThreadGroup.adoc[`ThreadGroup`] 
| Container for managing a group of joinable threads&period;
| xref:BloombergLP/bslmt/ThreadUtil.adoc[`ThreadUtil`] 
| This `struct` provides a suite of portable utility functions for managing threads&period;
| xref:BloombergLP/bslmt/ThreadUtilImpl-0f.adoc[`ThreadUtilImpl`] 
| Platform&hyphen;specific implementation of `ThreadUtil`&period;
| xref:BloombergLP/bslmt/ThroughputBenchmark.adoc[`ThroughputBenchmark`] 
| Mechanism for multi&hyphen;threaded throughput performance testing&period;
| xref:BloombergLP/bslmt/ThroughputBenchmarkResult.adoc[`ThroughputBenchmarkResult`] 
| Repository for multi&hyphen;threaded throughput benchmark results&period;
| xref:BloombergLP/bslmt/ThroughputBenchmarkResult_TestUtil.adoc[`ThroughputBenchmarkResult&lowbar;TestUtil`] 
| Test utility for accessing private throughput result attributes&period;
| xref:BloombergLP/bslmt/ThroughputBenchmark_TestUtil.adoc[`ThroughputBenchmark&lowbar;TestUtil`] 
| This class implements a test utility that gives the test driver access to the unexposed data members of `ThroughputBenchmark`&period;
| xref:BloombergLP/bslmt/ThroughputBenchmark_WorkData.adoc[`ThroughputBenchmark&lowbar;WorkData`] 
| Data transferred to ThroughputBenchmark&lowbar;WorkFunction&period;
| xref:BloombergLP/bslmt/ThroughputBenchmark_WorkFunction.adoc[`ThroughputBenchmark&lowbar;WorkFunction`] 
| This class is the work function functor, being called for each work thread&period;
| xref:BloombergLP/bslmt/TimedCompletionGuard.adoc[`TimedCompletionGuard`] 
| This class implements a guard for work completion within a specified duration&period;
| xref:BloombergLP/bslmt/TimedSemaphore.adoc[`TimedSemaphore`] 
| This class implements a portable timed semaphore type for thread synchronization&period; It forwards all requests to an appropriate platform&hyphen;specific implementation&period;
| xref:BloombergLP/bslmt/TimedSemaphoreImpl-09.adoc[`TimedSemaphoreImpl`] 
| Forward declaration of platform&hyphen;specific timed semaphore implementation&period;
| xref:BloombergLP/bslmt/TryLockGuard.adoc[`TryLockGuard`] 
| DEPRECATED&colon; Use `LockGuardTryLock` instead&period;
| xref:BloombergLP/bslmt/Turnstile.adoc[`Turnstile`] 
| Provide a mechanism to meter time at a configured event rate&period;
| xref:BloombergLP/bslmt/UnLockGuard.adoc[`UnLockGuard`] 
| This class is DEPRECATED&period; Use `LockGuardUnlock` instead&period;
| xref:BloombergLP/bslmt/WriteLockGuard.adoc[`WriteLockGuard`] 
| This class template implements a guard for acquisition and release of write synchronization resources (i&period;e&period;, writer locks)&period;
| xref:BloombergLP/bslmt/WriteLockGuardTryLock.adoc[`WriteLockGuardTryLock`] 
| This class template implements a guard for tentative acquisition and release of write synchronization resources (i&period;e&period;, writer locks)&period;
| xref:BloombergLP/bslmt/WriteLockGuardUnlock.adoc[`WriteLockGuardUnlock`] 
| This class template implements a guard for release and reacquisition of write synchronization resources (i&period;e&period;, writer locks)&period;
|===


== Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslmt/operator_lshift.adoc[`operator&lt;&lt;`] 
| Write the value of the specified `object` to the specified output `stream` in a single&hyphen;line format&period;
| xref:BloombergLP/bslmt/operator_eq.adoc[`operator&equals;&equals;`] 
| Return `true` if the specified `lhs` and `rhs` objects have the same value, and `false` otherwise&period;
| xref:BloombergLP/bslmt/operator_not_eq.adoc[`operator!&equals;`] 
| Return `true` if the specified `lhs` and `rhs` objects do not have the same value, and `false` otherwise&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
