]> git.sesse.net Git - stockfish/blobdiff - src/thread.h
Fix endless reaparenting loop
[stockfish] / src / thread.h
index 3f3c8c4c0a1614aee6735de0551073ee4c7a358c..9f0bb24add83bff8457c214e98c63af8a9c11210 100644 (file)
@@ -57,6 +57,7 @@ struct SplitPoint {
   volatile Move bestMove;
   volatile int moveCount;
   volatile bool cutoff;
+  volatile bool allSlavesRunning;
 };
 
 
@@ -78,7 +79,7 @@ public:
 
   void wake_up();
   bool cutoff_occurred() const;
-  bool is_available_to(const Thread& master) const;
+  bool is_available_to(Thread* master) const;
   void idle_loop(SplitPoint* sp_master);
   void idle_loop() { idle_loop(NULL); } // Hack to allow storing in start_fn
   void main_loop();
@@ -119,14 +120,12 @@ public:
   bool use_sleeping_threads() const { return useSleepingThreads; }
   int min_split_depth() const { return minimumSplitDepth; }
   int size() const { return (int)threads.size(); }
-  Thread* main_thread() const { return threads[0]; }
-  Thread* this_thread() const { return (Thread*)tls_get(tlsKey); }
-  void set_this_thread(Thread* th) const { tls_set(tlsKey, th); }
+  Thread* main_thread() { return threads[0]; }
 
   void wake_up() const;
   void sleep() const;
   void read_uci_options();
-  bool available_slave_exists(const Thread& master) const;
+  bool available_slave_exists(Thread* master) const;
   void set_timer(int msec);
   void wait_for_search_finished();
   void start_searching(const Position& pos, const Search::LimitsType& limits,
@@ -140,7 +139,6 @@ private:
 
   std::vector<Thread*> threads;
   Thread* timer;
-  ThreadLocalStorageKey tlsKey;
   Lock splitLock;
   WaitCondition sleepCond;
   Depth minimumSplitDepth;