Die Unix.sleep
Funktion kann das Programm für ganze Sekunden anhalten, aber wie können Sie es für weniger als eine Sekunde aussetzen?Schlafen weniger als eine Sekunde in OCaml
13
A
Antwort
13
Die klassische Unix-Lösung hierfür ist, wählen Sie() zu verwenden, ohne Filedeskriptoren:
let minisleep (sec: float) =
ignore (Unix.select [] [] [] sec)
12
Die Funktion Thread.delay
pausiert den Thread für die angegebene Anzahl von Sekunden, aber es dauert ein float, so dass Sie den Thread für weniger als eine Sekunde pausieren können.
4
von Unix Modul
val sleepf : float -> unit
Stoppen der Ausführung für die angegebene Anzahl von Sekunden. Wie Schlaf, aber Sekundenbruchteile werden unterstützt.
+2
Beachten Sie, dass diese Funktion in 4.03.0 hinzugefügt wurde. Frühere Versionen von OCaml haben keinen Zugriff auf diese spezielle Funktion. – hcarty
und vergessen Sie nicht über Signale, die – ygrek
wählen unterbrechen kann, wenn ich das versucht, scheiterte es mit Unix.Unix_error (11, „wählen Sie“, „“). –
Es funktioniert für mich, ich stellte sicher, es auszuprobieren. Ich bin auf Mac OS X 10.7. –