c++, usleep () est obsolète, workarounds pour Windows/MingW?
j'ai déjà découvert avec une autre question que Windows / MingW ne fournit pas les alternatives nanosleep() et setitimer() au usleep () obsolète. Mais mon but est de corriger tous les avertissements que cppcheck me donne, y compris les avertissements de style usleep ().
alors, y a-t-il une solution pour éviter d'une façon ou d'une autre usleep() sur Windows sans en utilisant cygwin ou en installant des charges de nouvelles dépendances / bibliothèques? Grâce.
6 réponses
usleep()
fonctionne avec des microsecondes. Dans windows pour obtenir la microseconde précession, vous devez utiliser QueryPerformanceCounter () fonction winapi. Ici vous pouvez trouver comment obtenir cette lésion en l'utilisant.
j'ai utilisé ce code (à l'origine de ici):
#include <windows.h>
void usleep(__int64 usec)
{
HANDLE timer;
LARGE_INTEGER ft;
ft.QuadPart = -(10*usec); // Convert to 100 nanosecond interval, negative value indicates relative time
timer = CreateWaitableTimer(NULL, TRUE, NULL);
SetWaitableTimer(timer, &ft, 0, NULL, NULL, 0);
WaitForSingleObject(timer, INFINITE);
CloseHandle(timer);
}
Notez que SetWaitableTimer()
utilise "