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

Reformat all_slaves_finished()

Rename and move under ThreadsManager class.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2011-11-06 13:37:18 +01:00
parent 369789b426
commit 43204d9ac2
3 changed files with 17 additions and 15 deletions

View file

@ -2071,22 +2071,10 @@ split_point_start: // At split points actual search starts from here
do pos.undo_move(pv[--ply]); while (ply);
}
} // namespace
// Little helper used by idle_loop() to check that all the slave threads of a
// split point have finished searching.
static bool all_slaves_finished(SplitPoint* sp) {
for (int i = 0; i < Threads.size(); i++)
if (sp->is_slave[i])
return false;
return true;
}
// Thread::idle_loop() is where the thread is parked when it has no work to do.
// The parameter 'sp', if non-NULL, is a pointer to an active SplitPoint object
// for which the thread is the master.
@ -2114,7 +2102,7 @@ void Thread::idle_loop(SplitPoint* sp) {
lock_grab(&sleepLock);
// If we are master and all slaves have finished don't go to sleep
if (sp && all_slaves_finished(sp))
if (sp && Threads.split_point_finished(sp))
{
lock_release(&sleepLock);
break;
@ -2166,7 +2154,7 @@ void Thread::idle_loop(SplitPoint* sp) {
// If this thread is the master of a split point and all slaves have
// finished their work at this split point, return from the idle loop.
if (sp && all_slaves_finished(sp))
if (sp && Threads.split_point_finished(sp))
{
// Because sp->is_slave[] is reset under lock protection,
// be sure sp->lock has been released before to return.

View file

@ -239,6 +239,19 @@ bool ThreadsManager::available_slave_exists(int master) const {
}
// split_point_finished() checks if all the slave threads of a given split
// point have finished searching.
bool ThreadsManager::split_point_finished(SplitPoint* sp) const {
for (int i = 0; i < activeThreads; i++)
if (sp->is_slave[i])
return false;
return true;
}
// split() does the actual work of distributing the work at a node between
// several available threads. If it does not succeed in splitting the
// node (because no idle threads are available, or because we have no unused

View file

@ -114,6 +114,7 @@ public:
void set_size(int cnt);
void read_uci_options();
bool available_slave_exists(int master) const;
bool split_point_finished(SplitPoint* sp) const;
void getline(std::string& cmd);
void start_listener();