00001 #ifndef _sys_Thread_h
00002 #define _sys_Thread_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <boost/shared_ptr.hpp>
00025
00026 #ifdef _WIN32
00027 # define QPID_TSS __declspec(thread)
00028 #elif defined (gcc)
00029 # define QPID_TSS __thread
00030 #else
00031 # define QPID_TSS
00032 #endif
00033
00034 namespace qpid {
00035 namespace sys {
00036
00037 class Runnable;
00038 class ThreadPrivate;
00039
00040 class Thread
00041 {
00042 boost::shared_ptr<ThreadPrivate> impl;
00043
00044 public:
00045 Thread();
00046 explicit Thread(qpid::sys::Runnable*);
00047 explicit Thread(qpid::sys::Runnable&);
00048
00049 void join();
00050
00051 unsigned long id();
00052
00053 static Thread current();
00054
00058 static unsigned long logId() { return current().id(); }
00059 };
00060
00061 }}
00062 #endif