Sur Windows, vous avez un problème vous généralement de ne jamais rencontrer sur Unix. Qui est de savoir comment obtenir un fil de dormir pour moins d'une milliseconde. Sur Unix, vous avez généralement un certain nombre de choix (sommeil, usleep et nanosleep) pour s'adapter à vos besoins. Sur Windows, cependant, il y a seulement Dormir avec la granularité de l'ordre de la milliseconde. Vous pouvez, toutefois, utiliser l' select
appel système pour créer une microseconde de sommeil. Sur Unix, c'est assez simple:
int usleep(long usec)
{
struct timeval tv;
tv.tv_sec = usec/1000000L;
tv.tv_usec = usec%1000000L;
return select(0, 0, 0, 0, &tv);
}
Sur Windows, cependant, l'utilisation de l' select
vous oblige à inclure le Winsock bibliothèque qui doit être initialisé comme ceci dans votre application:
WORD wVersionRequested = MAKEWORD(1,0);
WSADATA wsaData;
WSAStartup(wVersionRequested, &wsaData);
Puis sélectionnez, ne vous permettra pas d'être appelé sans prise de sorte que vous avez à faire un peu plus pour créer un microsleep méthode:
int usleep(long usec)
{
struct timeval tv;
fd_set dummy;
SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
FD_ZERO(&dummy);
FD_SET(s, &dummy);
tv.tv_sec = usec/1000000L;
tv.tv_usec = usec%1000000L;
return select(0, 0, 0, &dummy, &tv);
}
Tout cela a créé usleep méthodes renvoie zéro en cas de succès et de non-zéro pour les erreurs.