00001 #ifndef QRK_THREAD_H
00002 #define QRK_THREAD_H
00003
00013 #include <memory>
00014
00015
00016 namespace qrk
00017 {
00021 class Thread
00022 {
00023 Thread(void);
00024 Thread(const Thread& rhs);
00025 Thread& operator = (const Thread& rhs);
00026
00027 struct pImpl;
00028 const std::auto_ptr<pImpl> pimpl;
00029
00030 public:
00031 enum {
00032 Infinity = -1,
00033 };
00034
00041 explicit Thread(int (*fn)(void *), void* args);
00042 ~Thread(void);
00043
00044
00050 void run(int times = 1);
00051
00052
00056 void stop(void);
00057
00058
00064 int wait(void);
00065
00066
00073 bool isRunning(void) const;
00074 };
00075 }
00076
00077 #endif