muszę napisać program w C, który musi spać milisekundach, który ma działać na różnych platformach jak Windows, Linux, Solaris, HP-UX, IBM AIX, VxWorks i WinDriver LinuxSpanie przez milisekundy w systemach Windows, Linux, Solaris, HP-UX, IBM AIX, Vxworks, Wind River Linux?
- Na Windows , wywołanie systemowe
Sleep
będzie działało tylko w milisekundach. - Na Linux,
sleep
będzie działać na sekund;usleep
będzie działać w mikrosekundach i będzie dostępny również w systemie Solaris. - W Vxworks, mam nadzieję, że mogę zaimplementować przy użyciu
taskDelay
isysClkRateSet
.
Jak mogę osiągnąć ten milisekundowy sen w systemach HP-UX, IBM AIX i Wind River?
['usleep'] (http://pubs.opengroup.org/onlinepubs/009695399/functions/usleep.html) to POSIX, więc powinno być we wszystkich systemach zgodnych z POSIX (takich jak HP/UX, AIX itp.). Jest jednak oznaczony jako przestarzały, na rzecz ['nanosleep'] (http://pubs.opengroup.org/onlinepubs/009695399/functions/nanosleep.html), który z kolei jest oznaczony jako opcjonalny. –
Zauważ, że tylko dlatego, że możesz znaleźć sposób na * wyrażenie * opóźnienia w przedziale milisekundy, nie ma absolutnie żadnej gwarancji, że system operacyjny * dostarczy * dokładnie to, o co prosisz. Lista systemów operacyjnych: zazwyczaj nie jest wyświetlana w czasie rzeczywistym, więc najprawdopodobniej nie zagwarantują one takich rzeczy; kiedy opóźnienie się skończy, bardziej zaawansowane zadanie może zająć procesor. – unwind
Czy poniższy link odpowiada na pytanie? http://stackoverflow.com/questions/1157209/is-there-an-alternative-sleep-function-in-c-to-milliseconds – kunal18