Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
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
|