15 #ifndef THREADWIN32IMPL_H 16 #define THREADWIN32IMPL_H 18 #include "pandabase.h" 19 #include "selectThreadImpl.h" 21 #ifdef THREAD_WIN32_IMPL 24 #include "threadPriority.h" 25 #include "mutexWin32Impl.h" 26 #include "conditionVarWin32Impl.h" 34 class EXPCL_PANDA_PIPELINE ThreadWin32Impl {
36 INLINE ThreadWin32Impl(
Thread *parent_obj);
39 void setup_main_thread();
40 bool start(ThreadPriority priority,
bool joinable);
42 INLINE
void preempt();
44 string get_unique_id()
const;
46 INLINE
static void prepare_for_exit();
48 INLINE
static Thread *get_current_thread();
49 INLINE
static void bind_thread(
Thread *thread);
50 INLINE
static bool is_threading_supported();
51 INLINE
static bool is_true_threads();
52 INLINE
static bool is_simple_threads();
53 INLINE
static void sleep(
double seconds);
54 INLINE
static void yield();
55 INLINE
static void consider_yield();
58 static DWORD WINAPI root_func(LPVOID data);
59 static void init_pt_ptr_index();
68 MutexWin32Impl _mutex;
69 ConditionVarWin32Impl _cv;
76 static DWORD _pt_ptr_index;
77 static bool _got_pt_ptr_index;
80 #include "threadWin32Impl.I" 82 #endif // THREAD_WIN32_IMPL A thread; that is, a lightweight process.