From: Marco Costalba Date: Sat, 26 Jan 2013 13:23:37 +0000 (+0100) Subject: Clarify slavesMask usage X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=7062db7cb25a322a3c6bc18b06f1df2dc6431ef8 Clarify slavesMask usage When a thread is allocated a bit is set in slavesMask. This bit corresponds to the thread's index field that, because it happens to be the position in the threads array, eventually it is equal to the loop index 'i'. But instead of relying on this 'coincidence', explicitly use the 'idx' field so to clarify slavesMask usage. Backported from c++11 branch. No functional change. --- diff --git a/src/thread.cpp b/src/thread.cpp index 9aa0b55e..14c778f8 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -296,7 +296,7 @@ Value ThreadPool::split(Position& pos, Stack* ss, Value alpha, Value beta, for (size_t i = 0; i < threads.size() && !Fake; ++i) if (threads[i]->is_available_to(master) && ++slavesCnt <= maxThreadsPerSplitPoint) { - sp.slavesMask |= 1ULL << i; + sp.slavesMask |= 1ULL << threads[i]->idx; threads[i]->activeSplitPoint = &sp; threads[i]->searching = true; // Slave leaves idle_loop() threads[i]->notify_one(); // Could be sleeping @@ -352,8 +352,8 @@ void ThreadPool::wait_for_think_finished() { } -// start_thinking() wakes up the main thread sleeping in main_loop() so to start -// a new search, then returns immediately. +// start_thinking() wakes up the main thread sleeping in MainThread::idle_loop() +// so to start a new search, then returns immediately. void ThreadPool::start_thinking(const Position& pos, const LimitsType& limits, const std::vector& searchMoves, StateStackPtr& states) { diff --git a/src/thread.h b/src/thread.h index 7df9f241..ad17e8b2 100644 --- a/src/thread.h +++ b/src/thread.h @@ -153,7 +153,7 @@ public: bool slave_available(Thread* master) const; void wait_for_think_finished(); void start_thinking(const Position&, const Search::LimitsType&, - const std::vector&, Search::StateStackPtr&); + const std::vector&, Search::StateStackPtr&); template Value split(Position& pos, Search::Stack* ss, Value alpha, Value beta, Value bestValue, Move* bestMove,