Win32 Synchronization primitives
[Win32 Tools Library]

Collaboration diagram for Win32 Synchronization primitives:


Classes

class  CAutoResetEvent
 A class that wraps the operating system Event API and exposes just the interface for an auto reset event. More...
class  CCriticalSection
 A class that wraps the operating system Critical Section API and that implements the ICriticalSection interface. The addition of the ICriticalSection interface has increased the size of this object and added a layer of indirection into the Enter() and Leave() calls. If this proves to be a performance problem then we can simply create a 'CSmallAndFastCriticalSection which doesn't inherit from the interface. More...
class  CEvent
 A class that wraps the operating system Event API. See here for more details. More...
class  CEventOwner
 A class that manages an instance of CEvent in a scope based style. More...
class  ICriticalSection
 An interface onto the operating system Critical Section API. More...
class  ICriticalSection::Owner
 A class that takes ownership of an instance of ICriticalSection. That is it calls Enter() in the constructor and Leave() in the destructor and can therefore be used to support scope based locking and unlocking of instances of ICriticalSection. More...
class  ICriticalSection::ConditionalOwner
 A class that may take ownership of an instance of ICriticalSection. That is it calls Enter() in the constructor and Leave() in the destructor (but only if locked passed as true to the constructor) and can therefore be used to support scope based locking and unlocking of instances of ICriticalSection. More...
class  ICriticalSectionFactory
 An interface to a factory that gives out instances of ISharedCriticalSection. All of the methods which provide an instance of an ISharedCriticalSection require a key of some kind to be given. This allows the factory to (optionally) have a fixed sized pool of instances that are provided to callers by hashing the key that the caller passes. This would allow the factory to share a finite set of objects between all callers in (hopefully) a fair manner. Alternatively, of course, an implementation might simply ignore the key that the caller provides and, instead, allocate a unique instance of ISharedCriticalSection per call. When the instance of ISharedCriticalSection is no longer needed you should call Release() on it which may, or may not, depending on the factory implementation, free up resources. Note that the methods which take a pool ID provide critical sections that are guaranteed not to be available in another pool. This allows a class to obtain two critical sections from different pools and be sure that even if the factory is working with a fixed sized pool the two critical sections cannot be the same. More importantly it means that no other user of the factory can ever get an instance of a critical section from 'the wrong' pool. This helps prevent deadlocks when using pooled critical sections by keeping 'sets' of locks distinct which makes it possible to reason about lock ordering as long as the locks are from distinct pools. More...
class  IManageSharedCriticalSections
 An interface that is used by instances of ISharedCriticalSection to release themselves to the factory that created them. More...
class  ISharedCriticalSection
 An interface onto the operating system Critical Section API and which is used for critical sections that are obtained from an instance of ICriticalSectionFactory. The object accessed via an instance of this interface MAY be shared and should be released back to the factory by calling Release() on it when you're done with it. More...
class  ISingleWriterMultipleReaderLock::Reader
 A class that locks an instance of ISingleWriterMultipleReaderLock for read access. That is it calls EnterToRead() in the constructor and Leave() in the destructor and can therefore be used to support scope based locking and unlocking. More...
class  ISingleWriterMultipleReaderLock::Writer
 A class that locks an instance of ISingleWriterMultipleReaderLock for write access. That is it calls EnterToWrite() in the constructor and Leave() in the destructor and can therefore be used to support scope based locking and unlocking. More...
class  ISingleWriterMultipleReaderLock::ConditionalOwner
 A base class to support the ConditionalReader and ConditionalWriter classes. More...
class  ISingleWriterMultipleReaderLock::ConditionalReader
 A class that may lock an instance of ISingleWriterMultipleReaderLock for read access. That is it calls EnterToRead() in the constructor and Leave() in the destructor if locked is true and can therefore be used to support scope based locking and unlocking. More...
class  ISingleWriterMultipleReaderLock::ConditionalWriter
 A class that may lock an instance of ISingleWriterMultipleReaderLock for write access. That is it calls EnterToWrite() in the constructor and Leave() in the destructor if locked is true and can therefore be used to support scope based locking and unlocking. More...
class  IWaitable
 An interface to code that can be waited for, either via the methods on the interface or by passing a handle to one of the Wait Functions. More...
class  CManualResetEvent
 A class that wraps the operating system Event API and exposes just the interface for an manual reset event. More...
class  CMultiCriticalSection
 A class that allows you to manipulate a collection of instances of ICriticalSection as if they were a single instance. The idea being that this could be used to enforce an ordering over a sequence of locks that must be acquired together. The locks are locked in the order that they were added to the collection and unlocked in the reverse order. More...
class  COptex
 An "optimised" mutex class (based on original work by Jeffrey Richter). Note that this class creates shared memory and if you pass in a name that's in the Global namespace then the caller needs to have the SeCreateGlobalPrivilege on their account for the code to work without an access denied exception from the constructor. More...
class  COverlapped
 A class that wraps an OVERLAPPED structure. More...
class  COverlappedWithEvent
 A class that wraps an OVERLAPPED structure that uses an event. More...
class  CSemaphore
 A class that wraps the operating system Semaphore API. More...
class  CSharedCriticalSection
 A class that wraps the operating system Critical Section API and that implements the ISharedCriticalSection interface this is an interface for critical sections that are supplied by an instance of ICriticalSectionFactory and which may, depending on the implementation of the factory, be shared between users of the critical section. When you are done with an instance of CSharedCriticalSection you should call Release() to return it to the factory that allocated it. More...
class  CSharedCriticalSectionFactory
 An instance of ICriticalSectionFactory that gives out instances of ICriticalSection from a fixed sized pool of instances that are provided to callers by hashing the key that the caller passes. This allows the factory to share a finite set of objects between all callers in (hopefully) a fair manner. More...
class  CSingleWriterMultipleReaderLock
 A simple single writer, multiple reader lock. More...
class  CSingleWriterMultipleReaderLockEx
 A simple single writer, multiple reader lock. More...
class  CSmartSharedCriticalSection
 A smart pointer to an instance of ISharedCriticalSection. Takes ownership of the interface passed to it in its constructor and calls Release() on it in its destructor to aid in scope based designs. More...
class  CUniqueCriticalSectionFactory
 An instance of ICriticalSectionFactory that gives out unique instances of ICriticalSection which are allocated when requested and destroyed when the factory goes out of scope. More...
class  CWaitableCounter
 A counter that can be incremented and decremented and where you can wait on it either becoming zero or becoming non-zero. More...
class  CWaitableCounter::Incrementer
 A class that provides support for scope based incrementing of a waitable counter. The count is incremented for the life of the Incrementer; that is, it is incremented in the constructor of the and decremented in the destrutor. More...
class  CWaitableCounter::Decrementer
 A class that provides support for scope based decrementing of a waitable counter. The count is decreased for the life of the Decrementer; that is, it is decremented in the constructor of the and incremented in the destrutor. More...


Generated on Mon Sep 7 14:07:54 2009 for JetByte Socket Tools - v6.1 by  doxygen 1.5.3