TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: David Muir
from: Peter Fitzsimmons
date: 1996-02-14 23:27:12
subject: async timer thread

DM>     I need help with a thread who's sole task is to 
 DM> count seconds from 60 down 
 DM> to 1. Seems simple enough, use DosTimerAsync. No matter...

DosTimerAsync() is a 16bit OS/2 function,  so you have to use the 16bit
DosCreateSem() to use it.

What you want to do would be much easier with DosSleep.

        for(i=0; i<60; i++)
            DosSleep(1000);

This all be "about" 60 seconds.  If you need more precision,  use
DosStartTimer(),  which does contain a 32bit sample in the online
ref,and/or use DosSleep() and DosQuerySysInfo(QSV_MS_COUNT ..) in
conjunction:

 static ULONG now(void) /* return millisecond timer */
 {
     APIRET rc;
     ULONG ms=0;
     rc = DosQuerySysInfo(QSV_MS_COUNT,QSV_MS_COUNT, &ms, sizeof(ms));
     if(rc){
         printf("sys%04u: DosQuerySysInfo error", rc);
         return(0);
     }
     return ms;
 }

 thread()
 {

     ULONG start = now();
     ULONG n;
     do{
        DosSleep(500);
        n = now();
     }while((n > start) /* check for counter wrap, every 19.8 days */
            && (n - start) < 60000);
 }




--- Maximus/2 3.00
* Origin: Sol 3 * Toronto * V.32 * (905)858-8488 (1:259/414)
SEEN-BY: 50/99 78/0 270/101 620/243 711/401 409 410 413 430 808 809 934 955
SEEN-BY: 712/407 515 517 628 713/888 800/1 7877/2809
@PATH: 259/414 400 99 250/99 3615/50 396/1 270/101 712/515 711/808 809 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.