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.