From: "Alex Oleynikov" Newsgroups: comp.os.msdos.djgpp References: Subject: Re: Problem with tight kbhit() loop Lines: 49 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Message-ID: Date: Thu, 22 Aug 2002 13:25:10 GMT NNTP-Posting-Host: 68.15.54.9 X-Complaints-To: abuse AT cox DOT net X-Trace: news2.east.cox.net 1030022710 68.15.54.9 (Thu, 22 Aug 2002 09:25:10 EDT) NNTP-Posting-Date: Thu, 22 Aug 2002 09:25:10 EDT Organization: Cox Communications To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com "A. Sinan Unur" wrote in message news:Xns9271C2B62A250asu1cornelledu AT 132 DOT 236 DOT 56 DOT 8... > "Alex Oleynikov" wrote in > news:frN89.72711$Pb DOT 3104967 AT news2 DOT east DOT cox DOT net: > > > Hi all, > > > > I have a question about using kbhit() function in a tight loop like > > the one below: > > ... > > while( !kbhit() ); > > > > ch = getch(); > > ... > > > > If I just run the program that contains this code everything works > > fine. Now, if I run this program under the RHIDE's debugger and have > > some breakpoints prior to the code listed above, then this loop never > > quits and computer locks up completely (only cold re-boot helps to > > restart it) and sometimes even my CMOS settings are get screwed up, so > > BIOS loads their default values at start-up making me go nuts > > restoring them :o). > > > > The problem goes away if I put some time-consuming operation inside > > the loop, like a call to printf(..) or delay(..) functions. > > > > Is there a rational explanation to this situation? Is it specific to > > DJGPP? I have tried the same code under Borland Turbo C++ 2.0 and it > > always works fine even if I have the breakpoints to visit before > > getting into that loop. > > there is a possiblity that your code contains a bug. > > however, it is a good idea to modify your loop to > > while(!kbhit()) > dpmi_yield(); This fix works. > so that your environment (probably windows) remains responsive. No, there is no sight of Windows on that computer - DOS only. Thanks for advice. Alex