- Thread(Fn fn);
- ~Thread();
-
- void wake_up();
- bool cutoff_occurred() const;
- bool is_available_to(int master) const;
- void idle_loop(SplitPoint* sp_master);
- void idle_loop() { idle_loop(NULL); } // Hack to allow storing in start_fn
- void main_loop();
- void timer_loop();
- void wait_for_stop_or_ponderhit();
-
- SplitPoint splitPoints[MAX_SPLITPOINTS_PER_THREAD];
- MaterialTable materialTable;
- PawnTable pawnTable;
- int threadID;
- int maxPly;
- Lock sleepLock;
- WaitCondition sleepCond;
- NativeHandle handle;
- Fn start_fn;
- SplitPoint* volatile curSplitPoint;
- volatile int splitPointsCnt;
- volatile bool is_searching;
- volatile bool do_sleep;
- volatile bool do_exit;
+ Thread();
+ virtual ~Thread();
+ virtual void search();
+ void idle_loop();
+ void start_searching(bool resume = false);
+ void wait_for_search_finished();
+ void wait(std::atomic_bool& b);
+
+ Pawns::Table pawnsTable;
+ Material::Table materialTable;
+ Endgames endgames;
+ size_t idx, PVIdx;
+ int maxPly, callsCnt;
+
+ Position rootPos;
+ Search::RootMoves rootMoves;
+ Depth rootDepth;
+ HistoryStats history;
+ MoveStats counterMoves;
+ Depth completedDepth;
+ std::atomic_bool resetCalls;