// Const data after split point has been setup
const Position* pos;
const Search::Stack* ss;
- Thread* master;
+ Thread* masterThread;
Depth depth;
Value beta;
int nodeType;
Move threatMove;
// Const pointers to shared data
- MovePicker* mp;
- SplitPoint* parent;
+ MovePicker* movePicker;
+ SplitPoint* parentSplitPoint;
// Shared data
Mutex mutex;
bool is_available_to(Thread* master) const;
void wait_for(volatile const bool& b);
+ template <bool Fake>
+ 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);
+
SplitPoint splitPoints[MAX_SPLITPOINTS_PER_THREAD];
Material::Table materialTable;
Endgames endgames;
bool slave_available(Thread* master) const;
void wait_for_think_finished();
void start_thinking(const Position&, const Search::LimitsType&,
- const std::vector<Move>&, Search::StateStackPtr&);
-
- template <bool Fake>
- 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);
+ const std::vector<Move>&, Search::StateStackPtr&);
bool sleepWhileIdle;
Depth minimumSplitDepth;
+ size_t maxThreadsPerSplitPoint;
Mutex mutex;
ConditionVariable sleepCondition;
private:
std::vector<Thread*> threads;
TimerThread* timer;
- int maxThreadsPerSplitPoint;
};
extern ThreadPool Threads;