web-dev-qa-db-fra.com

pourquoi utiliser dormir et ne pas dormir

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"? 

5
Loay Ashmawy

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.

7
John Bollinger

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.

1
Ashwin Golani