/*++ Copyright (c) 1990-1994 Microsoft Corporation All rights reserved Module Name: ThreadM.hxx Abstract: Generic thread manager header. Author: Albert Ting (AlbertT) 13-Feb-1994 Environment: User Mode -Win32 Revision History: Albert Ting (AlbertT) 27-May-1994 C++ized --*/ #ifndef _THREADM_HXX #define _THREADM_HXX typedef PVOID PJOB; class TThreadM { friend TDebugExt; friend DWORD xTMThreadProc( LPVOID pVoid ); SIGNATURE( 'thdm' ) SAFE_NEW private: enum _States { kDestroyReq = 1, kDestroyed = 2, kPrivateCritSec = 4 } States; /******************************************************************** Valid TMSTATUS states: NULL -- Normal processing DESTROY_REQ -- No new jobs, jobs possibly running DESTROY_REQ, DESTROYED -- No new jobs, all jobs completed ********************************************************************/ TState _State; UINT _uIdleLife; UINT _uMaxThreads; UINT _uActiveThreads; UINT _uRunNowThreads; INT _iIdleThreads; HANDLE _hTrigger; MCritSec* _pCritSec; DWORD dwThreadProc( VOID ); static DWORD xdwThreadProc( PVOID pVoid ); virtual PJOB pThreadMJobNext( VOID ) = 0; virtual VOID vThreadMJobProcess( PJOB pJob ) = 0; virtual VOID vThreadMDeleteComplete( VOID ); protected: TThreadM( UINT uMaxThreads, UINT uIdleLife, MCritSec* pCritSec ); virtual ~TThreadM( VOID ); BOOL bValid( VOID ) const { return _hTrigger != NULL; } BOOL bJobAdded( BOOL bRunNow ); VOID vDelete( VOID ); }; #endif