Computer Chess Club Archives


Search

Terms

Messages

Subject: Threaded input library

Author: Alessandro Scotti

Date: 15:56:48 10/15/04


Hi,
a while ago I posted the source code for an input library that used a separate
thread for reading input.
Today Ross Boyd contacted me and reported a problem he found using the library
on Windows, when the input thread will hang for several or even many seconds.
During this time, the engine is not able to read input and may well lose the
game on time, as occurred to Ross.
I can now reproduce the problem relatively easily and have spent hours
investigating it, but have no solution. The thread blocks inside a call to
ReadFile, which is a system call and can't be debugged for now. The call does
not return even when there should be input already available, and when it exits
it's always after a number of seconds that is a multiple of 5, a "magic" number
that I do not use.
What I suspect after a lot (and I mean a lot) of experiments: the main thread is
always given priority over the thread that is feeding input (e.g. Winboard)
until some sort of timeout occurs internally to the operating system. The reason
I say that is the problem seems to disappear if I lower the priority of the
engine main thread, but not if I raise that of the input thread. Or, also the
problem disappears if I put the main thread in infinite sleep.
Anyway, regardless of these technical details, if by any chance you are using
this library in your code and playing in tournaments, probably it's better to
switch back to single-thread input code, i.e. polling. Otherwise you risk losing
games on time and this really sucks.
However, Kiwi will keep using the existing code so that I have a chance to
gather more data even if this means losing games or being kicked out of a
tournament.
I apologize to those that have downloaded the library and spent time on it: I
have tested the code for weeks and never found any problem... this kind of
things is really unpredictable, and frustrating... :-(




This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.