00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #pragma once
00019
00020 #include <pthread.h>
00021 #include <boost/thread/condition_variable.hpp>
00022 #include <boost/thread/mutex.hpp>
00023 #include <boost/thread/recursive_mutex.hpp>
00024 #include <boost/thread/shared_mutex.hpp>
00025 #include <boost/thread/thread.hpp>
00026 #include <boost/thread/tss.hpp>
00027
00028 namespace drizzled {
00029 namespace internal {
00030
00031 struct st_my_thread_var
00032 {
00033 boost::condition_variable_any suspend;
00034 boost::mutex mutex;
00035 boost::mutex* volatile current_mutex;
00036 boost::condition_variable_any* volatile current_cond;
00037 uint64_t id;
00038 bool volatile abort;
00039 void* opt_info;
00040
00041 st_my_thread_var(uint64_t id0) :
00042 current_mutex(NULL),
00043 current_cond(NULL),
00044 id(id0),
00045 abort(false),
00046 opt_info(NULL)
00047 {
00048 }
00049 };
00050
00051 typedef boost::thread_specific_ptr<st_my_thread_var> thread_local_st;
00052
00053 thread_local_st& my_thread_var2();
00054
00055 }
00056 }