Thread();
virtual void idle_loop();
bool cutoff_occurred() const;
- bool is_available_to(Thread* master) const;
+ bool available_to(const Thread* master) const;
template <bool Fake>
- void split(Position& pos, Search::Stack* ss, Value alpha, Value beta, Value* bestValue, Move* bestMove,
+ void split(Position& pos, const Search::Stack* ss, Value alpha, Value beta, Value* bestValue, Move* bestMove,
Depth depth, Move threatMove, int moveCount, MovePicker* movePicker, int nodeType, bool cutNode);
SplitPoint splitPoints[MAX_SPLITPOINTS_PER_THREAD];
};
struct TimerThread : public ThreadBase {
- TimerThread() : msec(0) {}
+ TimerThread() : run(false) {}
virtual void idle_loop();
- int msec;
+ bool run;
+ static const int Resolution = 5; // msec between two check_time() calls
};
MainThread* main() { return static_cast<MainThread*>((*this)[0]); }
void read_uci_options();
- Thread* available_slave(Thread* master) const;
+ Thread* available_slave(const Thread* master) const;
void wait_for_think_finished();
void start_thinking(const Position&, const Search::LimitsType&,
const std::vector<Move>&, Search::StateStackPtr&);