Listing 1: AThread.h Thread interface abstract base class
#ifndef _ATHREAD_
#define _ATHREAD_
class AThread {
public:
AThread () { mState = RUN; }
virtual ~AThread ()
{ if (mState != DEAD) Kill(TRUE); }
bool IsRunning() { return (mState == RUN); }
bool IsDead() { return (mState == DEAD); }
virtual void Kill(bool force) = 0;
virtual void Run() { CheckStatus(); }
protected:
enum ThreadState { RUN, TERMINATE, DEAD };
virtual void CheckStatus() = 0;
virtual void LockHandle() = 0;
virtual void UnlockHandle() = 0;
volatile ThreadState mState;
};
#endif
// End of File