From 7ff965eebfbc17d2bb4be9c64d56fecf68615010 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Fri, 20 Feb 2015 12:13:09 +0100 Subject: [PATCH] Improve comments in SMP code No functional change. --- src/search.cpp | 15 ++++++++------- src/thread.cpp | 2 +- src/thread.h | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index bc41978f..67693a38 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1517,9 +1517,9 @@ void Thread::idle_loop() { // Pointer 'this_sp' is not null only if we are called from split(), and not // at the thread creation. This means we are the split point's master. - SplitPoint* this_sp = splitPointsSize ? activeSplitPoint : nullptr; + SplitPoint* this_sp = activeSplitPoint; - assert(!this_sp || (this_sp->masterThread == this && searching)); + assert(!this_sp || (this_sp->master == this && searching)); while (!exit) { @@ -1529,6 +1529,7 @@ void Thread::idle_loop() { Threads.mutex.lock(); assert(activeSplitPoint); + SplitPoint* sp = activeSplitPoint; Threads.mutex.unlock(); @@ -1567,11 +1568,11 @@ void Thread::idle_loop() { // Wake up the master thread so to allow it to return from the idle // loop in case we are the last slave of the split point. - if ( this != sp->masterThread - && sp->slavesMask.none()) + if (this != sp->master && sp->slavesMask.none()) { - assert(!sp->masterThread->searching); - sp->masterThread->notify_one(); + assert(!sp->master->searching); + + sp->master->notify_one(); } // After releasing the lock we can't access any SplitPoint related data @@ -1638,7 +1639,7 @@ void Thread::idle_loop() { } } - // Grab the lock to avoid races with Thread::notify_one() + // Avoid races with notify_one() fired from last slave of the split point std::unique_lock lk(mutex); // If we are master and all slaves have finished then exit idle_loop diff --git a/src/thread.cpp b/src/thread.cpp index 279d9cfe..a466df87 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -145,7 +145,7 @@ void Thread::split(Position& pos, Stack* ss, Value alpha, Value beta, Value* bes // Pick and init the next available split point SplitPoint& sp = splitPoints[splitPointsSize]; - sp.masterThread = this; + sp.master = this; sp.parentSplitPoint = activeSplitPoint; sp.slavesMask = 0, sp.slavesMask.set(idx); sp.depth = depth; diff --git a/src/thread.h b/src/thread.h index 54083d2e..606f9626 100644 --- a/src/thread.h +++ b/src/thread.h @@ -46,7 +46,7 @@ struct SplitPoint { // Const data after split point has been setup const Position* pos; Search::Stack* ss; - Thread* masterThread; + Thread* master; Depth depth; Value beta; int nodeType; -- 2.39.2