Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » FAQ Linux » Sleep

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.12.2002, 20:18 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Erstellt von virtual
Um einen Prozess unter Linux oder UNIX schlafen zu legen, bedient man sich
normalerweise der Funktion sleep(3). Leider hat diese Funktion den Nachteil,
dass man mindestens eine Sekunde schlafen muss.


Doch das muss nicht sein: millisleep bietet den gleichen Komfort wie die
Windows API routine Sleep, man kann mit ihr theoretisch auf die tausendstel
Sekunde genau schlafen. Auf PCs ist die Mindestschlafdauer jedoch (unabh.
von Windows oder Linux) ca. 1/60 Sekunde.


Die Routine gibt 0 zurück, wenn alles klar ging, -1 bei einem Fehler
(kann eigentlich nur ein falscher Parameter sein.)


nanosleep(2), was hier verwendet wird, ist POSIX. Wer auch mit BSD 4.3 zufrieden ist, kann direkt usleep(3) verwenden.

C++:
int millisleep(unsigned p_nMilliSeconds)
{
  struct timespec tSleep;
  struct timespec tRemainder;
  int nRet;

  // Setup structures
  tSleep.tv_sec  = p_nMilliSeconds/1000;
  tSleep.tv_nsec  = (p_nMilliSeconds%1000)*1000000;

  // call nanosleep. The loop is needed to handle interrupts
  while (-1 == (nRet=nanosleep(&tSleep, &tRemainder)))
  {
    if (EINTR != errno)
      break;
    tSleep = tRemainder;
  }

  return nRet;
}


--
class God : public ChuckNorris { };

Dieser Post wurde am 13.01.2003 um 15:24 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ FAQ Linux ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: