On Wed March 7 2007 14:30, Don Dailey wrote:
What are you using this for? Just for stopping the engine
I used it originally with NeuroGo, because NeuroGo does global search and can be interrupted at any time and play the best move so far. Most other Go programs had no meaningful way to interrupt move generation at an arbitrary time (that only recently changed with the new MC algorithms).
or are you using it to implement other interesting features such as pondering?
Pondering is an implementation detail of a GTP engine, I see no reason why there should be support for pondering in the protocol.
The way GtpEngine implements pondering is that it calls the function GtpEngine::Ponder() in a different thread than the command thread, whenever the engine is sitting and waiting for the next command. GtpEngine ensures that Ponder() and any other function of the Go engine can never execute concurrently, so there are no thread-safety requirements on the engine.
- Markus