1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 00:33:09 +00:00

Move wake_sleeping_thread() to Thread class

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2011-04-20 11:18:36 +02:00
parent 2c317d7b28
commit 79e50a2fbf
2 changed files with 10 additions and 16 deletions

View file

@ -76,7 +76,6 @@ namespace {
bool available_thread_exists(int master) const;
bool thread_is_available(int slave, int master) const;
bool cutoff_at_splitpoint(int threadID) const;
void wake_sleeping_thread(int threadID);
void idle_loop(int threadID, SplitPoint* sp);
template <bool Fake>
@ -509,7 +508,7 @@ bool think(Position& pos, bool infinite, bool ponder, int time[], int increment[
// Wake up needed threads and reset maxPly counter
for (int i = 0; i < ThreadsMgr.active_threads(); i++)
{
ThreadsMgr.wake_sleeping_thread(i);
ThreadsMgr[i].wake_up();
ThreadsMgr[i].maxPly = 0;
}
@ -2107,7 +2106,7 @@ split_point_start: // At split points actual search starts from here
// Wake up master thread so to allow it to return from the idle loop in
// case we are the last slave of the split point.
if (useSleepingThreads && threadID != tsp->master && threads[tsp->master].state == THREAD_AVAILABLE)
wake_sleeping_thread(tsp->master);
threads[tsp->master].wake_up();
}
// If this thread is the master of a split point and all slaves have
@ -2201,7 +2200,7 @@ split_point_start: // At split points actual search starts from here
// Wake up all the threads and waits for termination
for (int i = 1; i < MAX_THREADS; i++)
{
wake_sleeping_thread(i);
threads[i].wake_up();
while (threads[i].state != THREAD_TERMINATED) {}
}
@ -2376,7 +2375,7 @@ split_point_start: // At split points actual search starts from here
threads[i].state = THREAD_WORKISWAITING; // This makes the slave to exit from idle_loop()
if (useSleepingThreads && i != master)
wake_sleeping_thread(i);
threads[i].wake_up();
}
// Everything is set up. The master thread enters the idle loop, from
@ -2400,17 +2399,6 @@ split_point_start: // At split points actual search starts from here
}
// wake_sleeping_thread() wakes up the thread with the given threadID
// when it is time to start a new search.
void ThreadsManager::wake_sleeping_thread(int threadID) {
lock_grab(&threads[threadID].sleepLock);
cond_signal(&threads[threadID].sleepCond);
lock_release(&threads[threadID].sleepLock);
}
/// RootMove and RootMoveList method's definitions
RootMove::RootMove() {

View file

@ -75,6 +75,12 @@ struct Thread {
SplitPoint* volatile splitPoint;
volatile int activeSplitPoints;
SplitPoint splitPoints[MAX_ACTIVE_SPLIT_POINTS];
void wake_up() {
lock_grab(&sleepLock);
cond_signal(&sleepCond);
lock_release(&sleepLock);
}
};
#endif // !defined(THREAD_H_INCLUDED)