1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-05-01 17:19:36 +00:00

Reduce lock contention in sp_search_pv()

In less then 1% of cases value > sp->bestValue, so avoid
an useless lock in the common case. This is the same change
already applied to sp_search().

Also SplitPoint futilityValue is not volatile because
never changes after has been assigned in split()

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2010-01-26 12:05:38 +01:00
parent 5ca4284027
commit cf9bf4e58f
2 changed files with 30 additions and 26 deletions

View file

@ -2046,6 +2046,8 @@ namespace {
break; break;
// New best move? // New best move?
if (value > sp->bestValue) // Less then 2% of cases
{
lock_grab(&(sp->lock)); lock_grab(&(sp->lock));
if (value > sp->bestValue && !thread_should_stop(threadID)) if (value > sp->bestValue && !thread_should_stop(threadID))
{ {
@ -2078,6 +2080,7 @@ namespace {
} }
lock_release(&(sp->lock)); lock_release(&(sp->lock));
} }
}
lock_grab(&(sp->lock)); lock_grab(&(sp->lock));

View file

@ -51,7 +51,8 @@ struct SplitPoint {
SearchStack *parentSstack; SearchStack *parentSstack;
int ply; int ply;
Depth depth; Depth depth;
volatile Value alpha, beta, bestValue, futilityValue; volatile Value alpha, beta, bestValue;
Value futilityValue;
bool pvNode; bool pvNode;
int master, slaves[THREAD_MAX]; int master, slaves[THREAD_MAX];
Lock lock; Lock lock;