Je lisais un code d'application et quelque chose a attiré mon attention. Le code était le suivant: usleep(6*1000*1000)
. Je comprends qu’ils utilisent ce format pour des problèmes de lisibilité.
Je pense que sleep
et usleep
utilisent tous deux la fonction nanosleep
. Ma question est donc la suivante: pourquoi ne pas utiliser sleep (6) qui fait exactement la même chose (c'est-à-dire: qui dort 6 secondes)? Gagnons-nous en performance lorsque nous utilisons usleep
? usleep
est-il plus "générique"?
Je pense que dormir et usleep utilisent la fonction nanosleep,
Ils peuvent faire, ou ils ne peuvent pas. Je ne suis au courant d'aucune justification dans les normes C et POSIX pour cette supposition.
ma question est donc la suivante: pourquoi ne pas utiliser sleep (6) qui fait exactement la même chose (c'est-à-dire: qui dort 6 secondes)? Est-ce que nous gagnons en performance lorsque nous utilisons usleep? est-ce que usleep est plus "générique"?
La fonction sleep()
a pour origine AT & T Unix version 7. La fonction usleep()
a pour origine BSD 4.3. Bien que POSIX normalise un mélange de fonctionnalités tirées des deux, il fut un temps où vous n’ayez probablement plus qu’une des deux options à votre disposition, celle qui était fonction de votre version d’Unix.
De nos jours, usleep()
est obsolète et a été supprimé de POSIX. Il est toujours largement supporté, mais nanosleep()
(ou sleep()
) devrait être utilisé à la place dans le nouveau code.
L'argument pour dormir est en secondes, l'argument pour dormir est en microsecondes. Autre que cela, je pense qu'ils sont identiques.
sleep ($ n) == usleep ($ n * 1000000) usleep (25000) ne dort que pendant 0,025 seconde.