mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Get rid of nativeThread
No functional change.
This commit is contained in:
parent
26dabb1e6b
commit
be77406a55
4 changed files with 8 additions and 9 deletions
|
@ -76,7 +76,7 @@ eg_type = typename std::conditional<(E < SCALING_FUNCTIONS), Value, ScaleFactor>
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct EndgameBase {
|
struct EndgameBase {
|
||||||
|
|
||||||
virtual ~EndgameBase() {}
|
virtual ~EndgameBase() = default;
|
||||||
virtual Color strong_side() const = 0;
|
virtual Color strong_side() const = 0;
|
||||||
virtual T operator()(const Position&) const = 0;
|
virtual T operator()(const Position&) const = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -38,9 +38,9 @@ namespace {
|
||||||
// when start_routine (and hence virtual idle_loop) is called and when joining.
|
// when start_routine (and hence virtual idle_loop) is called and when joining.
|
||||||
|
|
||||||
template<typename T> T* new_thread() {
|
template<typename T> T* new_thread() {
|
||||||
T* th = new T();
|
std::thread* th = new T;
|
||||||
th->nativeThread = std::thread(&ThreadBase::idle_loop, th); // Will go to sleep
|
*th = std::thread(&T::idle_loop, (T*)th); // Will go to sleep
|
||||||
return th;
|
return (T*)th;
|
||||||
}
|
}
|
||||||
|
|
||||||
void delete_thread(ThreadBase* th) {
|
void delete_thread(ThreadBase* th) {
|
||||||
|
@ -50,7 +50,7 @@ namespace {
|
||||||
th->mutex.unlock();
|
th->mutex.unlock();
|
||||||
|
|
||||||
th->notify_one();
|
th->notify_one();
|
||||||
th->nativeThread.join(); // Wait for thread termination
|
th->join(); // Wait for thread termination
|
||||||
delete th;
|
delete th;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ namespace {
|
||||||
|
|
||||||
void ThreadBase::notify_one() {
|
void ThreadBase::notify_one() {
|
||||||
|
|
||||||
std::unique_lock<Mutex>(this->mutex);
|
std::unique_lock<Mutex> lk(mutex);
|
||||||
sleepCondition.notify_one();
|
sleepCondition.notify_one();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -89,14 +89,13 @@ struct SplitPoint {
|
||||||
/// ThreadBase struct is the base of the hierarchy from where we derive all the
|
/// ThreadBase struct is the base of the hierarchy from where we derive all the
|
||||||
/// specialized thread classes.
|
/// specialized thread classes.
|
||||||
|
|
||||||
struct ThreadBase {
|
struct ThreadBase : public std::thread {
|
||||||
|
|
||||||
virtual ~ThreadBase() = default;
|
virtual ~ThreadBase() = default;
|
||||||
virtual void idle_loop() = 0;
|
virtual void idle_loop() = 0;
|
||||||
void notify_one();
|
void notify_one();
|
||||||
void wait_for(volatile const bool& b);
|
void wait_for(volatile const bool& b);
|
||||||
|
|
||||||
std::thread nativeThread;
|
|
||||||
Mutex mutex;
|
Mutex mutex;
|
||||||
Spinlock spinlock;
|
Spinlock spinlock;
|
||||||
ConditionVariable sleepCondition;
|
ConditionVariable sleepCondition;
|
||||||
|
|
|
@ -68,7 +68,7 @@ namespace {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pos.set(fen, Options["UCI_Chess960"], Threads.main());
|
pos.set(fen, Options["UCI_Chess960"], Threads.main());
|
||||||
SetupStates = Search::StateStackPtr(new std::stack<StateInfo>());
|
SetupStates = Search::StateStackPtr(new std::stack<StateInfo>);
|
||||||
|
|
||||||
// Parse move list (if any)
|
// Parse move list (if any)
|
||||||
while (is >> token && (m = UCI::to_move(pos, token)) != MOVE_NONE)
|
while (is >> token && (m = UCI::to_move(pos, token)) != MOVE_NONE)
|
||||||
|
|
Loading…
Add table
Reference in a new issue