00001 #ifndef __Thread__
00002 #define __Thread__
00003 
00004 
00005 class Thread {
00006 public:
00007         Thread();
00008         virtual ~Thread();
00009 
00010     void start();
00011         void pause();
00012         void stop();
00013 
00014     void restart();
00015 
00016         void kill();
00017 
00018         void join();
00019 
00020 
00021 protected:
00022 
00023         virtual void operator()() = 0;
00024 
00025         bool canRun();
00026 
00027 
00028 private:
00029 
00030         static unsigned long __stdcall entry(void* p);
00031 
00032         void*                   _handle;
00033         unsigned long   _id;
00034         volatile bool   _canRun;
00035 };
00036 
00037 
00038 
00039 #endif