sleep(3) est une norme posix bibliothèque méthode qui tente de suspendre le thread appelant pour la quantité de temps spécifié en secondes. usleep(3) fait la même chose, sauf qu'elle prend un de temps en microsecondes à la place. Les deux sont effectivement mis en œuvre avec la nanosleep(2) de l'appel système.
La dernière méthode fait la même chose, sauf que c'est une partie de la Fondation de cadre plutôt que d'être une bibliothèque C d'appel. Il prend un NSTimeInterval qui représente la quantité de temps pour être dormi comme un double indiquant les secondes et les fractions de seconde.
Pour toutes fins utiles, elles ne sont fonctionnellement la même chose, c'est à dire, essayez de mettre le thread appelant pour certains laps de temps spécifié.
Quelle est la meilleure condition pour utiliser
ces méthodes ?
Jamais
Ou, vraiment, à peu près presque assurément jamais, jamais, jamais à l'extérieur de la plus unique de circonstances.
Qu'essayez-vous de faire?
Mais le projet de Loi, je trouve que le fait de dormir pendant quelques nanosecondes, ici et là, efface toutes mes inexplicable EXC_BAD_ACCESS se bloque! Heh. Je grince des dents fois que je vois un code qui utilise usleep() pour "la synchronisation des threads. Mon grincer des dents les muscles sont malheureusement mal. Je sais exactement ce que tu veux dire. Dans ce cas, je l'espérais pour exercer le sourire muscles plutôt que de l'grincer des dents 🙂 Honnêtement, je vais avoir un moment difficile de penser à une seule valide pour dormir() plus. Loin, loin, préférable d'utiliser un système de minuterie et de laisser le fil libres pour faire d'autres choses. je pense que vous vous méprenez. la seule sommeil est le sommeil des années 90. pas 90ms. et il n'est exercé dans le code de test. mon point est que je suis d'accord avec vous que l'utilisation de sleep() est mauvais.
Sur la plupart des systèmes d'exploitation, sleep(0) et ses variantes peuvent être utilisées pour améliorer l'efficacité dans un bureau de vote situation de donner à d'autres threads une chance de travailler jusqu'à ce que le planificateur de threads décide de réveiller les bureaux de fil. Il bat une boucle while. Je n'ai pas trouvé beaucoup d'utilisation pour un délai non nul si, et apple en particulier, a fait un assez bon travail de construction d'un événement driven architecture qui devrait éliminer le besoin d'interrogation dans la plupart des cas, de toute façon.
-Exemple l'utilisation de sommeil est dans l'état suivant:
Dans réseau de scénario de simulation, nous avons habituellement des événements qui sont exécutées au cas par cas,à l'aide d'un planificateur. Le planificateur exécute les événements dans le bon ordre.
Lorsqu'un événement est terminé en cours d'exécution, et le planificateur se déplace vers le prochain événement, le planificateur compare le prochain événement le temps d'exécution avec la machine de l'horloge. Si le prochain événement est prévu pour l'avenir, le simulateur dort jusqu'à ce que le temps réel est atteint, puis exécute l'événement suivant.
-À partir de linux Homme pages:
La usleep() fonction suspend l'exécution du thread appelant pour (au moins) usec microsecondes. Le sommeil peut être allongé légèrement par toute l'activité du système ou par le temps de traitement de l'appel ou de la granularité du système de compteurs.
alors que sommeil est de retarder l'exécution d'une tâche(peut-être un fil ou autre) pendant un certain temps .Reportez-vous à Un et Deux pour plus de détails sur les fonctions.
sleep(3) est une norme posix bibliothèque méthode qui tente de suspendre le thread appelant pour la quantité de temps spécifié en secondes. usleep(3) fait la même chose, sauf qu'elle prend un de temps en microsecondes à la place. Les deux sont effectivement mis en œuvre avec la nanosleep(2) de l'appel système.
La dernière méthode fait la même chose, sauf que c'est une partie de la Fondation de cadre plutôt que d'être une bibliothèque C d'appel. Il prend un NSTimeInterval qui représente la quantité de temps pour être dormi comme un double indiquant les secondes et les fractions de seconde.
Pour toutes fins utiles, elles ne sont fonctionnellement la même chose, c'est à dire, essayez de mettre le thread appelant pour certains laps de temps spécifié.
OriginalL'auteur Jason Coco
Jamais
Ou, vraiment, à peu près presque assurément jamais, jamais, jamais à l'extérieur de la plus unique de circonstances.
Qu'essayez-vous de faire?
Heh. Je grince des dents fois que je vois un code qui utilise
usleep()
pour "la synchronisation des threads. Mon grincer des dents les muscles sont malheureusement mal.Je sais exactement ce que tu veux dire. Dans ce cas, je l'espérais pour exercer le sourire muscles plutôt que de l'grincer des dents 🙂
Honnêtement, je vais avoir un moment difficile de penser à une seule valide pour dormir() plus. Loin, loin, préférable d'utiliser un système de minuterie et de laisser le fil libres pour faire d'autres choses.
je pense que vous vous méprenez. la seule sommeil est le sommeil des années 90. pas 90ms. et il n'est exercé dans le code de test. mon point est que je suis d'accord avec vous que l'utilisation de sleep() est mauvais.
OriginalL'auteur bbum
Sur la plupart des systèmes d'exploitation, sleep(0) et ses variantes peuvent être utilisées pour améliorer l'efficacité dans un bureau de vote situation de donner à d'autres threads une chance de travailler jusqu'à ce que le planificateur de threads décide de réveiller les bureaux de fil. Il bat une boucle while. Je n'ai pas trouvé beaucoup d'utilisation pour un délai non nul si, et apple en particulier, a fait un assez bon travail de construction d'un événement driven architecture qui devrait éliminer le besoin d'interrogation dans la plupart des cas, de toute façon.
OriginalL'auteur snort
-Exemple l'utilisation de sommeil est dans l'état suivant:
Dans réseau de scénario de simulation, nous avons habituellement des événements qui sont exécutées au cas par cas,à l'aide d'un planificateur. Le planificateur exécute les événements dans le bon ordre.
Lorsqu'un événement est terminé en cours d'exécution, et le planificateur se déplace vers le prochain événement, le planificateur compare le prochain événement le temps d'exécution avec la machine de l'horloge. Si le prochain événement est prévu pour l'avenir, le simulateur dort jusqu'à ce que le temps réel est atteint, puis exécute l'événement suivant.
-À partir de linux Homme pages:
La usleep() fonction suspend l'exécution du thread appelant pour (au moins) usec microsecondes. Le sommeil peut être allongé légèrement par toute l'activité du système ou par le temps de traitement de l'appel ou de la granularité du système de compteurs.
alors que sommeil est de retarder l'exécution d'une tâche(peut-être un fil ou autre) pendant un certain temps .Reportez-vous à Un et Deux pour plus de détails sur les fonctions.
OriginalL'auteur Salah Amean