mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-21 17:46:26 +08:00
Retire ThreadBase
Now that we don't have anymore TimerThread, there is no need of this long class hierarchy. Also assorted reformatting while there. To verify no regression, passed at STC with 7 threads: LLR: 2.97 (-2.94,2.94) [-5.00,0.00] Total: 30990 W: 4945 L: 4942 D: 21103 No functional change.
This commit is contained in:
47
src/thread.h
47
src/thread.h
@@ -35,41 +35,30 @@
|
||||
#include "thread_win32.h"
|
||||
|
||||
|
||||
/// ThreadBase struct is the base of the hierarchy from where we derive all the
|
||||
/// specialized thread classes.
|
||||
/// Thread struct keeps together all the thread related stuff. 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.
|
||||
|
||||
struct ThreadBase : public std::thread {
|
||||
|
||||
ThreadBase() { exit = false; }
|
||||
virtual ~ThreadBase() = default;
|
||||
virtual void idle_loop() = 0;
|
||||
void notify_one();
|
||||
void wait(std::atomic_bool& b);
|
||||
void wait_while(std::atomic_bool& b);
|
||||
|
||||
Mutex mutex;
|
||||
ConditionVariable sleepCondition;
|
||||
std::atomic_bool exit;
|
||||
};
|
||||
|
||||
|
||||
/// Thread struct keeps together all the thread related stuff like locks, state,
|
||||
/// history and countermoves tables. 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.
|
||||
|
||||
struct Thread : public ThreadBase {
|
||||
struct Thread : public std::thread {
|
||||
|
||||
Thread();
|
||||
virtual void idle_loop();
|
||||
void search(bool isMainThread = false);
|
||||
virtual ~Thread();
|
||||
virtual void search();
|
||||
void idle_loop();
|
||||
void join();
|
||||
void notify_one();
|
||||
void wait(std::atomic_bool& b);
|
||||
|
||||
std::atomic_bool exit, searching, resetCalls;
|
||||
Mutex mutex;
|
||||
ConditionVariable sleepCondition;
|
||||
|
||||
Pawns::Table pawnsTable;
|
||||
Material::Table materialTable;
|
||||
Endgames endgames;
|
||||
size_t idx, PVIdx;
|
||||
int maxPly, callsCnt;
|
||||
std::atomic_bool searching, resetCallsCnt;
|
||||
|
||||
Position rootPos;
|
||||
Search::RootMoveVector rootMoves;
|
||||
@@ -83,11 +72,7 @@ struct Thread : public ThreadBase {
|
||||
/// MainThread is a derived classes used to characterize the the main one
|
||||
|
||||
struct MainThread : public Thread {
|
||||
MainThread() { thinking = true; } // Avoid a race with start_thinking()
|
||||
virtual void idle_loop();
|
||||
void join();
|
||||
void think();
|
||||
std::atomic_bool thinking;
|
||||
virtual void search();
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user