#pragma once class CThread { protected: HANDLE hThread; unsigned int threadID; HANDLE hTerminateEvent; public: CThread(); virtual ~CThread(); //function methods virtual bool start( bool suspended = false ); //starts a thread virtual void stop( unsigned long exitCode = 0 );//stops a thread virtual unsigned long run() = 0; //user puts actual code here virtual unsigned long suspend(); //suspend it virtual unsigned long resume(); //resume it virtual bool notifyTerminate(); //notify thread that its time to terminate //state get methods virtual unsigned long getID(); //get system-wide unique ID virtual HANDLE getHandle(); //get the handle virtual int getPriority(); //get priority virtual unsigned long getExitCode(); //get the exit code - returns //STILL_ACTIVE if well, still active! //state set method virtual bool setPriority( int priority ); //set priority //global state query methods static unsigned long getCurrentID(); //get pseudo-thread id static HANDLE getCurrentHandle(); //get pseudo-thread handle static void sleep( unsigned long msecs ); //sleep for _msecs_ milliseconds };
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)