1
0
Fork 0
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:
Marco Costalba 2015-03-21 11:50:14 +01:00
parent 26dabb1e6b
commit be77406a55
4 changed files with 8 additions and 9 deletions

View file

@ -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;
}; };

View file

@ -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();
} }

View file

@ -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;

View file

@ -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)