struct Thread {
- enum ThreadState
- {
- INITIALIZING, // Thread is initializing itself
- SEARCHING, // Thread is performing work
- AVAILABLE, // Thread is waiting for work
- WORKISWAITING, // Master has ordered us to start searching
- TERMINATED // We are quitting and thread is terminated
- };
-
void wake_up();
bool cutoff_occurred() const;
bool is_available_to(int master) const;
int maxPly;
Lock sleepLock;
WaitCondition sleepCond;
- volatile ThreadState state;
SplitPoint* volatile splitPoint;
volatile int activeSplitPoints;
+ volatile bool is_searching;
volatile bool do_sleep;
volatile bool do_terminate;
+
+#if defined(_MSC_VER)
+ HANDLE handle;
+#else
+ pthread_t handle;
+#endif
};
Thread& operator[](int threadID) { return threads[threadID]; }
void init();
void exit();
- void init_hash_tables();
bool use_sleeping_threads() const { return useSleepingThreads; }
int min_split_depth() const { return minimumSplitDepth; }