[OSy] mikrosekundova presnost sleep a podobnych funkcii

Milan Burda milan.burda at gmail.com
Fri Nov 2 11:46:36 CET 2007


zdravim,
chcem sa spytat naco je dobra mikrosekundova presnost nasledovnych funkcii

* thread_join_timeout()
* thread_usleep()
* timer_init()
* mutex_lock_timeout()

ked napriklad thread_sleep() ma parameter v sekundach. rozdiel s oproti us je 10000000x (10^6), nieje to trosku moc?

ved napriklad vo Windows funkcia Sleep ma presnost ms... a to tiez len na nejake zhruba nasobky 15ms kvoli hustote vyvolavanie interruptu casovaca.

VOID WINAPI Sleep(
  DWORD dwMilliseconds
);

alebo

DWORD WINAPI WaitForSingleObject(
  HANDLE hHandle,
  DWORD dwMilliseconds
);

ked uvazujeme ze na simulatore na pocitacoch na MS nam ten CPU dava zhruba 5 MHz...
tak to mame 5 taktov za 1 mikrosekundu... oproti 5000 za milisekundu.
na pomalsom pocitaci, napriklad PIII 500 MHz zodpovedal MSIM zdruha 500 KHz CPU, co je
0.5 taktu/mikrosekunda.

je jasne, ze na realnom CPU by bola jeho frekvencia radovo stvoky MHz... ale

ak pouzijeme interval casoveho interruptu nejakych 100 Hz (Linux ma moznosti 100, 250, 300 (kvoli NTSC), 1000) tak niesme schopny cakat menej ako 10ms... takze tu nejake presnosti v us neprichadzaju do uvahy.

uplne v pohode by stacila varianta thread_sleep() ktora by mala parameter v milisekundach

s pozdravom
Milan Burda





More information about the NSWI004 mailing list