2017-05-24 3 views
1

Gibt es einen Nanoschlaf für Elixir/Erlang da draußen? Erlangs timer.sleep dauert "nur" Millisekunden und ich suche nach einem kürzeren Schlaf als das.Elixier/Erlang - Nanosleep

+0

Nach http://erlang.org/pipermail/erlang-questions/2007-March/025677.html, war es nicht so etwas wie diese zumindest 2007. Die dort vorgeschlagene Lösung war "busy wait", dh man überprüft die Zeit in einer Schleife solange, bis die Dauer, für die man schlafen möchte, abgelaufen ist. Der Autor des Posts ging schließlich mit der busy Wait Lösung. – Dogbert

+4

Ungefähr wie viele Nanosekunden möchten Sie schlafen? Wenn es winzig ist, könnte beschäftigtes Warten tatsächlich gut genug sein. – Dogbert

+1

Etwas zu beachten: Wie genau muss die Schlafdauer sein? Ich nehme an, dass Erlangs preemptive Scheduler hier eine Speiche in dein Rad setzen könnte. Wenn Sie Pech haben, unterbricht der Scheduler möglicherweise den Prozess mitten in der Warteschleife, und Sie würden viel länger schlafen, als Sie wollten. Abhängig von Ihrem Anwendungsfall ist dies jedoch möglicherweise kein Problem. –

Antwort

0

ich in etwas zu tun, wie dies am Ende:

defmodule TimeCheck do 
    def time_ok(time) do 
    if :erlang.system_time - time < 10000 do 
     TimeCheck.time_ok(time) 
    else 
     true 
    end 
    end 
end 
Verwandte Themen