]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Tweak best thread selection logic
[stockfish] / src / search.cpp
index 3387091363212dc40b0d88c17e210cdd44d5db8b..a46c44627d4b1677b1f4a0a11f13825d24e0e746 100644 (file)
@@ -312,9 +312,14 @@ void MainThread::search() {
       &&  rootMoves[0].pv[0] != MOVE_NONE)
   {
       for (Thread* th : Threads)
       &&  rootMoves[0].pv[0] != MOVE_NONE)
   {
       for (Thread* th : Threads)
-          if (   th->completedDepth > bestThread->completedDepth
-              && th->rootMoves[0].score > bestThread->rootMoves[0].score)
+      {
+          Depth depthDiff = th->completedDepth - bestThread->completedDepth;
+          Value scoreDiff = th->rootMoves[0].score - bestThread->rootMoves[0].score;
+
+          if (   (depthDiff > 0 && scoreDiff >= 0)
+              || (scoreDiff > 0 && depthDiff >= 0))
               bestThread = th;
               bestThread = th;
+      }
   }
 
   previousScore = bestThread->rootMoves[0].score;
   }
 
   previousScore = bestThread->rootMoves[0].score;