- Thread(Fn fn);
- ~Thread();
-
- void wake_up();
- bool cutoff_occurred() 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();
- void timer_loop();
- void wait_for_stop_or_ponderhit();
-
- SplitPoint splitPoints[MAX_SPLITPOINTS_PER_THREAD];
- MaterialTable materialTable;
- PawnTable pawnTable;
- size_t idx;
- 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;
+ explicit Thread(size_t);
+ virtual ~Thread();
+ virtual void search();
+ void clear();
+ void idle_loop();
+ void start_searching();
+ void wait_for_search_finished();
+ int best_move_count(Move move);
+
+ Pawns::Table pawnsTable;
+ Material::Table materialTable;
+ size_t pvIdx, pvLast;
+ uint64_t ttHitAverage;
+ int selDepth, nmpMinPly;
+ Color nmpColor;
+ std::atomic<uint64_t> nodes, tbHits, bestMoveChanges;
+
+ Position rootPos;
+ Search::RootMoves rootMoves;
+ Depth rootDepth, completedDepth;
+ CounterMoveHistory counterMoves;
+ ButterflyHistory mainHistory;
+ CapturePieceToHistory captureHistory;
+ ContinuationHistory continuationHistory[2][2];
+ Score contempt;