X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fthread.h;h=ac6040f285cb8705bac9881a6c0988840497db07;hb=0d68b523a390e2f5c37f211316869d798e852289;hp=786c5b677c1934a2dfd0c9aa6ab09870f87b052b;hpb=1a414cd9cb274d9572c60fe4067671cd993ffb36;p=stockfish diff --git a/src/thread.h b/src/thread.h index 786c5b67..ac6040f2 100644 --- a/src/thread.h +++ b/src/thread.h @@ -1,7 +1,7 @@ /* Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2012 Marco Costalba, Joona Kiiski, Tord Romstad + Copyright (C) 2008-2013 Marco Costalba, Joona Kiiski, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -75,7 +75,6 @@ struct SplitPoint { // Shared data Mutex mutex; - Position* slavesPositions[MAX_THREADS]; volatile uint64_t slavesMask; volatile int64_t nodes; volatile Value alpha; @@ -103,13 +102,14 @@ struct Thread { void wait_for(volatile const bool& b); template - Value split(Position& pos, Search::Stack* ss, Value alpha, Value beta, Value bestValue, Move* bestMove, - Depth depth, Move threatMove, int moveCount, MovePicker& mp, int nodeType); + void split(Position& pos, Search::Stack* ss, Value alpha, Value beta, Value* bestValue, Move* bestMove, + Depth depth, Move threatMove, int moveCount, MovePicker* movePicker, int nodeType); SplitPoint splitPoints[MAX_SPLITPOINTS_PER_THREAD]; Material::Table materialTable; Endgames endgames; Pawns::Table pawnsTable; + Position* activePosition; size_t idx; int maxPly; Mutex mutex; @@ -149,10 +149,10 @@ struct ThreadPool : public std::vector { MainThread* main_thread() { return static_cast((*this)[0]); } void read_uci_options(); - bool slave_available(Thread* master) const; + Thread* available_slave(Thread* master) const; void wait_for_think_finished(); - void start_thinking(const Position&, const Search::LimitsType&, - const std::vector&, Search::StateStackPtr&); + void start_thinking(const Position&, const Search::LimitsType&, const std::vector&, + Search::StateStackPtr&, Search::MovesVectPtr&); bool sleepWhileIdle; Depth minimumSplitDepth;