Timer-Bibliothek in C
Ich bin auf der Suche nach einer open-source-timer library geschrieben in C. Die Bibliothek sollte Timer-callback-Funktionen, etc.
Auf der Suche sehe ich POSIX-Timer oder setitimer(), die einen signal-basierten Ansatz, der zu Problemen führen kann in Multithread-code.
Sagen, wenn ich verwenden Sie POSIX-Timer innen-Gewinde-code, die Signale werden nicht das erreichen der richtigen Stelle. Wenn ich mehrere Timer in einem Prozess dann sollte jeder nutzen unterschiedliche Signale. Gibt es irgendwelche anderen alternativen?
- Es ist in der Regel hilfreich, um zu erklären, warum das so ist, immer nach unten-gestimmt / geschlossen.
- Haben Sie gesucht, es überhaupt?
- Dies ist immer in der Nähe Stimmen, weil es wahrscheinlich zu werben, Diskussion, Argumente, polling, oder erweiterte Diskussion. Etwas Forschung zu tun, versuchen Sie, einen oder mehrere Kandidaten, Fragen Sie, wenn Sie Probleme mit Ihnen haben. Oder Fragen, zum Beispiel, kann ich mit POSIX setitimer in Multithread-code ... das ist eine gute Frage
- Ich antwortete auf die Frage über die Verwendung von POSIX-Timer in threaded code. Es kann getan werden, und ich zeigte den entsprechenden Teil der Dokumentation.
- Ein Programm kann mehrere Intervall-Timer mit timer_create(). Siehe meine Antwort.
- Ich landete mit libdispatch auf macOS und wurde auch auf mehreren anderen Systemen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie Linux benutzen, würde ich empfehlen, mit dem integrierten POSIX-timer-API.
Hier ist ein link zu einigen Dokumentation Darstellung der Verwendung von POSIX-Timer, die Unterstützung für callback-Funktionen.
Bezüglich mehrerer Timer in einem Prozess, die Dokumentation sagt:
Beachten Sie, dass die POSIX-Timer kann verwendet werden, in einer Multithread-Anwendung durch einrichten-Benachrichtigung mit SIGEV_THREAD_ID wie unten gezeigt:
Here is a link to some documentation showing how to use POSIX timers which provide support for callback functions
" - wo? Ich kann nicht sehen, jede Erwähnung von callback-Funktionensevp.sigev_notify
Mitglied der sevp-Struktur.SIGEV_THREAD
fürsevp.sigev_notify
Den Linux-Weg, es zu tun wäre über timerfd_create, die sich gut mit epoll-basierte event-loops (und damit die Vermeidung der Einschränkungen von signal-Handlern)
Ist dies viel zu einfach zu schaffen, eine Bibliothek für.
Beispiel: