]> git.sesse.net Git - stockfish/blobdiff - src/thread.h
Recursive lock all split point's chain
[stockfish] / src / thread.h
index e62857dd409b7df14ef90c59226f889b8413f570..9c5344c2d390ea67622139a96e5929905c02a019 100644 (file)
@@ -61,21 +61,28 @@ struct SplitPoint {
   MovePicker *mp;
   volatile int moves;
   volatile int cpus;
-  bool finished;
+  volatile bool stopRequest;
 };
 
+// ThreadState type is used to represent thread's current state
+
+enum ThreadState
+{
+  THREAD_SEARCHING,     // thread is performing work
+  THREAD_AVAILABLE,     // thread is polling for work
+  THREAD_SLEEPING,      // we are not thinking, so thread is sleeping
+  THREAD_BOOKED,        // other thread (master) has booked us as a slave
+  THREAD_WORKISWAITING, // master has ordered us to start
+  THREAD_TERMINATED     // we are quitting and thread is terminated
+};
 
 struct Thread {
   SplitPoint *splitPoint;
   volatile int activeSplitPoints;
   uint64_t nodes;
   uint64_t betaCutOffs[2];
-  volatile bool stopRequest;
-  volatile bool running;
-  volatile bool idle;
-  volatile bool sleeping;
-  volatile bool workIsWaiting;
   volatile bool printCurrentLineRequest;
+  volatile ThreadState state;
   unsigned char pad[64]; // set some distance among local data for each thread
 };