+/// MainThread and TimerThread are sublassed from Thread to characterize the two
+/// special threads: the main one and the recurring timer.
+
+struct MainThread : public Thread {
+ MainThread() : thinking(true) {} // Avoid a race with start_thinking()
+ virtual void idle_loop();
+ volatile bool thinking;
+};
+
+struct TimerThread : public Thread {
+ TimerThread() : msec(0) {}
+ virtual void idle_loop();
+ int msec;
+};
+
+
+/// ThreadPool struct handles all the threads related stuff like init, starting,