-/// Thread struct is used to keep together all the thread related stuff like locks,
-/// state and especially split points. We also use per-thread pawn and material hash
-/// tables so that once we get a pointer to an entry its life time is unlimited and
-/// we don't have to care about someone changing the entry under our feet.
+ std::thread nativeThread;
+ Mutex mutex;
+ ConditionVariable sleepCondition;
+ bool exit, searching;
+
+public:
+ 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& condition);
+
+ Pawns::Table pawnsTable;
+ Material::Table materialTable;
+ Endgames endgames;
+ size_t idx, PVIdx;
+ int maxPly;
+ std::atomic<uint64_t> nodes, tbHits;
+
+ Position rootPos;
+ Search::RootMoves rootMoves;
+ std::atomic<Depth> rootDepth;
+ Depth completedDepth;
+ CounterMoveStat counterMoves;
+ ButterflyHistory history;
+ CounterMoveHistoryStat counterMoveHistory;
+};