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 #include "qpid/CommonImportExport.h"
00026
00027 #ifdef _WIN32
00028 # define QPID_TSS __declspec(thread)
00029 #elif defined (__GNUC__)
00030 # define QPID_TSS __thread
00031 #elif defined (__SUNPRO_CC)
00032 # define QPID_TSS __thread
00033 #else
00034 # error "Dont know how to define QPID_TSS for this platform"
00035 #endif
00036
00037 namespace qpid {
00038 namespace sys {
00039
00040 class Runnable;
00041 class ThreadPrivate;
00042
00043 class Thread
00044 {
00045 boost::shared_ptr<ThreadPrivate> impl;
00046
00047 public:
00048 QPID_COMMON_EXTERN Thread();
00049 QPID_COMMON_EXTERN explicit Thread(qpid::sys::Runnable*);
00050 QPID_COMMON_EXTERN explicit Thread(qpid::sys::Runnable&);
00051
00052 QPID_COMMON_EXTERN void join();
00053
00054 QPID_COMMON_EXTERN unsigned long id();
00055
00056 QPID_COMMON_EXTERN static Thread current();
00057
00061 static unsigned long logId() { return current().id(); }
00062 };
00063
00064 }}
00065 #endif