The C++ framework for developing highly scalable, high performance servers on Windows platforms.

Win32 Threading primitives
[Win32 Tools Library]

Collaboration diagram for Win32 Threading primitives:


Classes

class  IManageThreadPoolThreads
 An interface to allow a thread pool to monitor the actions of the threads that it manages. More...
class  IRunnable
 An interface to code that can be Run() on a thread. Usually passed to the CThread constructor. More...
class  IThreadPoolWorkerThreadCallback
 An interface to an object that acts as a worker thread for a work queue. The life-cycle of an object that implements this interface is as follows: one call to Initialise() (and, if it returns true), 0 or many calls to Process() and then one call to Shutdown(). More...
class  IThreadPoolWorkerThreadFactory
 An interface to create instances of IThreadPoolWorkerThreadCallback. Usually passed to the CThreadPool constructor. More...
class  CThreadedCallbackTimerQueue
 A class that manages a group of timers that implement IQueueTimers::Timer and which have their IQueueTimers::Timer::OnTimer() method called when the timer expires. The class uses an implementation of IManageTimerQueue to manage the timers and then manages its own timeouts using a thread to call IManageTimerQueue::BeginTimeoutHandling() every GetNextTimeout() milliseconds. You can configure it to use CCallbackTimerQueueEx or supply your own implementation of IManageTimerQueue. See here for more details. More...
class  CThreadPool
 A thread pool which can expand and contract (i.e. change the number of pooled threads) based on the work load. The pool has minimum and maximum sizes and a dispatch timeout. If dispatching a work item to a worker thread takes longer than the timeout then the pool is enlarged by one thread. There is also a maximum number of "dormant" threads, that is threads that are not working and when this number is reached worker threads are removed from the pool. The thread pool uses two I/O completion ports to do its work. Work items are dispatched to the dispatch port and are processed by the maintenance thread which dispatches the work items to the work port where the worker threads are waiting. This two layer dispatching means that dispatching from user code is fast but the pool can adjust its size depending on how long it takes for a worker thread to pick up a work item. Work items only ever queue on the dispatch port, the work port will only ever have a single work item on it at a time. More...
class  CThreadPool::WorkerThread
 A worker thread for the CThreadPool. The user work is done by an instance of IThreadPoolWorkerThread which is created by the supplied factory in the worker thread's constructor and destroyed in the destructor. More...
class  CThreadPoolEx::WorkerThread
 A worker thread for the CThreadPoolEx. The user work is done by an instance of IThreadPoolExWorkerThread which is created by the supplied factory in the worker thread's constructor and destroyed in the destructor. More...
class  IAssociateDeviceWithIOSubSystem
class  IDispatchToWorkerThread
class  IIOPool
 An interface to an I/O thread pool (usually based on an I/O completion port) that can have operations on buffers and handlers dispatched to it (either directly or as a result of an I/O completion packet being generated by some asynchronous I/O event) and that handles these events on one of the threads in the pool. More...
class  IIOSubSystem
class  CIOPool
 An I/O thread pool implementing IIOPool. More...
class  CIOPool::WorkerThread
 A worker thread class for the CIOPool. More...
class  CIOPoolBase
 An I/O thread pool implementing IIOPool. More...
class  CIOPoolBase::WorkerThread
 A worker thread class for the CIOPoolBase. More...
class  CIOPoolEx
 An I/O thread pool implementing IIOPool. More...
class  CIOPoolEx::WorkerThread
 A worker thread class for the CIOPoolEx. More...
class  CIOCompletionPort
 A simple wrapper around the I/O Completion Port API. I/O completion ports are, essentially, thread safe queues that can control how many threads are allowed to run and process items on the queue in a way that simply isn't possible if you stay entirely in "user mode". The queue keeps the threads that are waiting in fifo order to minimise memory paging and can limit the number of 'runable'threads that it releases. See here and here for more details. More...
class  CThread
 A class that wraps the operating system Threading API and provides a thread object that runs code which implements the IRunnable interface. More...
class  CThreadAffinity
 A class that wraps the operating system SetThreadAffinityMask API. More...
class  CThreadPool
 A thread pool which can expand and contract (i.e. change the number of pooled threads) based on the work load. The pool has minimum and maximum sizes and a dispatch timeout. If dispatching a work item to a worker thread takes longer than the timeout then the pool is enlarged by one thread. There is also a maximum number of "dormant" threads, that is threads that are not working and when this number is reached worker threads are removed from the pool. The thread pool uses two I/O completion ports to do its work. Work items are dispatched to the dispatch port and are processed by the maintenance thread which dispatches the work items to the work port where the worker threads are waiting. This two layer dispatching means that dispatching from user code is fast but the pool can adjust its size depending on how long it takes for a worker thread to pick up a work item. Work items only ever queue on the dispatch port, the work port will only ever have a single work item on it at a time. More...
class  CThreadPool::WorkerThread
 A worker thread for the CThreadPool. The user work is done by an instance of IThreadPoolWorkerThread which is created by the supplied factory in the worker thread's constructor and destroyed in the destructor. More...
class  CThreadPoolEx::WorkerThread
 A worker thread for the CThreadPoolEx. The user work is done by an instance of IThreadPoolExWorkerThread which is created by the supplied factory in the worker thread's constructor and destroyed in the destructor. More...


Generated on Sun Sep 12 19:06:57 2021 for The Server Framework - v7.4 by doxygen 1.5.3