00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00021
00022 #ifndef NET_INSTAWEB_UTIL_PUBLIC_THREAD_H_
00023 #define NET_INSTAWEB_UTIL_PUBLIC_THREAD_H_
00024
00025 #include "base/scoped_ptr.h"
00026 #include "net/instaweb/util/public/basictypes.h"
00027 #include "net/instaweb/util/public/thread_system.h"
00028
00029 namespace net_instaweb {
00030
00032 class ThreadSystem::Thread {
00033 public:
00044 Thread(ThreadSystem* runtime, ThreadFlags flags);
00045
00048 virtual ~Thread();
00049
00052 bool Start();
00053
00056 void Join();
00057
00058 virtual void Run() = 0;
00059
00060 private:
00066 scoped_ptr<ThreadImpl> impl_;
00067
00068 ThreadFlags flags_;
00069 bool started_;
00070
00071 DISALLOW_COPY_AND_ASSIGN(Thread);
00072 };
00073
00074 }
00075
00076 #endif ///< NET_INSTAWEB_UTIL_PUBLIC_THREAD_H_