87 votes

Comment mettre en veille pendant quelques millisecondes dans swift 2.2 ?

Quelqu'un peut-il me dire comment utiliser sleep() pour quelques millisecondes dans swift 2.2 ?

while (true){
    print("sleep for 0.002 seconds.")
    sleep(0.002) // not working
}

mais

while (true){
    print("sleep for 2 seconds.")
    sleep(2) // working
}

cela fonctionne.

1 votes

Le thread sleep ou yield est valable dans le cas du polling, par exemple. De nombreuses interfaces ne proposent pas de notifications. Vous devez donc vérifier de temps en temps si un changement asynchrone est imminent. Si vous le faites sans mettre le thread en pause entre les vérifications, vous harcelez inutilement le CPU et bloquez probablement le processus que vous attendez.

1 votes

Sleep() prend int comme paramètre. Ainsi, sleep(0.002) fera dormir 0 seconde. Utilisez plutôt usleep(nanosecondes).

0 votes

Pour ceux qui souhaitent utiliser les fonctions async & await de Swift 5.5, voir este réponse d'un autre poste.

2voto

eonist Points 1748

Alternativement :

DispatchQueue.main.asyncAfter(deadline: .now() + 0.002) {
   /*Do something after 0.002 seconds have passed*/
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X