J'utilise le code Perl suivant sur l'environnement Windows:perl sur les fenêtres coincées sur les appels à usleep d'un autre module
use Time::HiRes qw(usleep);
#(some code here)
$self->{GLOBAL_OBJ}->xsleep($delay) if($delay);
sub xsleep {
my $seconds = shift;
#print "will sleep:$seconds seconds\n";
$seconds = $seconds * 1000000;
usleep($seconds);
#print "slept:$seconds micro seconds\n";
return 0;
}
Quand j'appelle xsleep comme ça (d'un autre module), le système est bloqué et je Je ne peux l'arrêter que par ctrl + c, mais quand je l'appelle depuis le module actuel, ça marche bien.
Quelqu'un peut-il me dire pourquoi c'est et comment puis-je le réparer? Merci
Si vous allez dormir dans des unités de secondes, pourquoi ne pas simplement utiliser le sommeil (deuxième résolution)? Vous devrez peut-être aussi accepter le param comme 'my ($ self, $ seconds) = @_;' dans la première ligne de votre sous-routine xsleep. – xxfelixxx
merci @xxfelixxx, c'était le problème de $ self. –