1
0
Fork 0

Get rid of nativeThread

No functional change.
pull/305/head
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>
struct EndgameBase {
virtual ~EndgameBase() {}
virtual ~EndgameBase() = default;
virtual Color strong_side() 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.
template<typename T> T* new_thread() {
T* th = new T();
th->nativeThread = std::thread(&ThreadBase::idle_loop, th); // Will go to sleep
return th;
std::thread* th = new T;
*th = std::thread(&T::idle_loop, (T*)th); // Will go to sleep
return (T*)th;
}
void delete_thread(ThreadBase* th) {
@ -50,7 +50,7 @@ namespace {
th->mutex.unlock();
th->notify_one();
th->nativeThread.join(); // Wait for thread termination
th->join(); // Wait for thread termination
delete th;
}
@ -61,7 +61,7 @@ namespace {
void ThreadBase::notify_one() {
std::unique_lock<Mutex>(this->mutex);
std::unique_lock<Mutex> lk(mutex);
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
/// specialized thread classes.
struct ThreadBase {
struct ThreadBase : public std::thread {
virtual ~ThreadBase() = default;
virtual void idle_loop() = 0;
void notify_one();
void wait_for(volatile const bool& b);
std::thread nativeThread;
Mutex mutex;
Spinlock spinlock;
ConditionVariable sleepCondition;

View File

@ -68,7 +68,7 @@ namespace {
return;
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)
while (is >> token && (m = UCI::to_move(pos, token)) != MOVE_NONE)