Effiziente Timer-Algorithmus
Was ist der beste Algorithmus zu implementieren eine einfache timer-Bibliothek. Die Bibliothek sollte die folgenden:
- Timer gestartet werden
- Timer gestoppt werden
- Timer überprüft werden, ob Sie noch läuft
Auf Timer-Ablauf einer callback-Funktion wird aufgerufen werden.
Dem timer-Modul Timer ermöglichen eine zeitliche Auflösung der Ns-und der Modul muß eine kick jeden Ns-Eingabe-Modul, um zu überprüfen auf abgelaufene Timer.
Viele Timer können parallel aktiv.
Den besten Algorithmus erfüllen muss, die folgenden Ziele
- Robust sein, um Timer wird gestartet /gestoppt, während der Verarbeitung einer timer-Ablauf callback -
- Erlauben Timer gestartet, gestoppt und überprüft schnell
- Haben einen kleinen Speicher-footprint
Hinsichtlich
- Welche Sprache soll die Lösung sein?
- Ich bin mehr daran interessiert, den Algorithmus als die Umsetzung. Wenn es dir hilft zu wissen, würde ich wahrscheinlich die Implementierung in C. Grüße
Du musst angemeldet sein, um einen Kommentar abzugeben.
Besten Algorithmus, den ich gesehen habe für Timer ist ein timer-Rad gefunden, in der Forschung Papier Hash-und Hierarchische Timing-Räder: - Datenstrukturen für die Effiziente Implementierung eines Timer-Anlage
Ich weiß, in Java gibt es eine implementation mit Netty, JBoss und ich bin sicher, auch anderswo, die Sie verwenden können, wenn Sie schreiben in Java.
Timer werden in der Regel am besten umgesetzt in ein Betriebssystem-kernel, an dem die Montage/C-Ebene, die Nutzung von Plattform-spezifischen Funktionen wie APIC-Timer, wo immer möglich.
Möchten Sie vielleicht, zu betrachten http://lwn.net/Articles/167897/ für details auf die Linux-Implementierung, und Graben, durch den Linux-Quellcode, um zu sehen, arbeiten-Implementierungen.
Auf POSIX-ish-Systeme, die Sie verwenden können, die
timer_create
/timer_settime
Familie von Funktionen, um eine Menge von dieser "for free".