Maison > Article > Opération et maintenance > Quelle est la différence entre usleep et sleep sous Linux ?
La différence entre usleep et sleep sous Linux : la fonction sleep est utilisée pour effectuer une suspension pendant le nombre de secondes spécifié, tandis que la fonction usleep est utilisée pour effectuer une suspension pendant le nombre spécifié de microsecondes. sleep est un appel non système, implémenté dans une fonction de bibliothèque, et définit l'heure de l'alarme via alarm() Sauf que l'unité de temps est la microseconde, usleep est similaire à sleep en cours d'utilisation.
L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.
(1) sleep()-------en secondes
Fichier d'en-tête :
#include <windows.h> // 在VC中使用带上头文件 #include <unistd.h> // 在gcc编译器中,使用的头文件因gcc版本的不同而不同
Fonction : Exécuter la suspension pendant le nombre de secondes spécifié
Syntaxe :
unsigned int sleep(unsigned int seconds);
sleep() est un appel non système. sleep() est implémenté dans la fonction de bibliothèque. Il définit l'heure de l'alarme via alarm() et utilise sigsuspend() pour suspendre le processus sur le signal SIGALARM.
sleep() ne peut être précis qu'au deuxième niveau. sleep() provoquera une pause du processus en cours jusqu'à ce que le temps spécifié par le paramètre seconds soit atteint, ou jusqu'à ce qu'il soit interrompu par un signal.
#includef55648144b4a1c5cce7ad2f6519be0f3
return : Si le processus est suspendu jusqu'au temps spécifié par le paramètre seconds, 0 sera renvoyé en cas de succès. S'il y a une interruption du signal, les secondes restantes seront renvoyées.
Exemple :
#include <windows.h> #include<stdio.h> int main() { int a; a=1; printf("hello"); sleep(a); /* VC 使用Sleep*/ printf("world"); return 0; }
(2) usleep()----en microsecondes
Fichier d'en-tête :
#include <unistd.h>
Fonction : La fonction usleep suspend le processus pendant un certain temps, l'unité est la microseconde (une millionième de seconde)
Syntaxe :
void usleep(int micro_seconds);
Sauf que l'unité de temps est la microseconde, elle est similaire à sleep() utilisée. De plus, l'implémentation est également différente. Parce que le sommeil est implémenté à l'aide d'une alarme, l'unité de temps est s, tandis que l'unité de temps de usleep est us
, ce qui n'est certainement pas implémenté par l'alarme, donc leurs implémentations sont différentes, mais elles le sont toutes les deux. est utilisé sous Linux, mais ne peut pas être utilisé dans Windows, car sleep et usleep sont définis sous unistd.h.
#includef55648144b4a1c5cce7ad2f6519be0f3
return : Si le processus est suspendu jusqu'au temps spécifié par le paramètre seconds, 0 sera renvoyé en cas de succès. S'il y a une interruption du signal, les microsecondes restantes seront renvoyées.
Valeur de retour : Aucune
Description du contenu : Cette fonction peut arrêter temporairement l'exécution du programme. Le paramètre micro_seconds est le nombre de microsecondes (us) à mettre en pause.
Remarque :
Cette fonction ne peut pas fonctionner dans le système d'exploitation Windows. Utilisé dans l'environnement de test Linux.
Voir : usleep() est similaire à sleep(), utilisé pour retarder les processus suspendus. Le processus est suspendu et placé dans la file d'attente de jour.
Dans des circonstances normales, lorsque le temps de retard est de l'ordre de quelques secondes, utilisez autant que possible la fonction sleep().
Si le temps de retard est de plusieurs dizaines de millisecondes (1 ms = 1 000 us) ou moins, utilisez la fonction usleep() si possible. De cette façon, vous pouvez utiliser au mieux le temps CPU
Apprentissage recommandé : Tutoriel vidéo Linux
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!