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);
|
|
};
|