| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| 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™.