33 lines
642 B
C
33 lines
642 B
C
|
#pragma once
|
||
|
|
||
|
// TODO: I really don't like the interface for this
|
||
|
|
||
|
class IThread
|
||
|
{
|
||
|
public:
|
||
|
typedef void (* MainProcPtr)(void * param);
|
||
|
|
||
|
IThread();
|
||
|
~IThread();
|
||
|
|
||
|
void Start(MainProcPtr proc, void * procParam = NULL);
|
||
|
void Stop(void);
|
||
|
void ForceStop(void);
|
||
|
|
||
|
bool IsRunning(void) { return isRunning; }
|
||
|
bool StopRequested(void) { return stopRequested; }
|
||
|
|
||
|
HANDLE GetHandle(void) { return theThread; }
|
||
|
|
||
|
protected:
|
||
|
MainProcPtr mainProc;
|
||
|
void * mainProcParam;
|
||
|
volatile bool stopRequested;
|
||
|
bool isRunning;
|
||
|
HANDLE theThread;
|
||
|
UInt32 threadID;
|
||
|
|
||
|
private:
|
||
|
static UInt32 WINAPI _ThreadProc(void * param);
|
||
|
};
|