Delegate.c.

Abstrakte Funktionszeiger in c
Jetzt downloaden

Delegate.c. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Other/Proprietary Li...
  • Preis:
  • FREE
  • Name des Herausgebers:
  • William Ahern
  • Website des Verlags:
  • http://25thandclement.com/~william/projects/

Delegate.c. Stichworte


Delegate.c. Beschreibung

Abstrakte Funktionszeiger in c C-Bibliotheken und Anwendungskomponenten verwenden häufig Funktionsrückrufe an die Schnittstelle mit einem anderen Code. Manchmal ist die erforderliche Unterschrift des Funktionsrückrufs ärgerlich und / oder stellt / oder führt zu Dunkelheit und Indirektion, die bisher delegate.c leiden musste. Das Delegate.c-Paket implementiert eine Art abstrakter Funktionszeiger durch Erfassen einer Funktionszeichen (Delegierter ()) und es durch eine einfache Schnittstelle freilegen (Invoke ()). Es bietet etwas lockeres Annäherungen von Lambda-Ausdrücken; Oder noch analoger, C # -Delegierte. Die Implementierung hängt von der Introspektion des GCC-Introspektionsabteilung und auf Libfi ab. Beide sind häufig tagable.Alle Die Magie im Delegierten () Makro sollte von GCC konstant gefaltet sein, selbst auf Optimierungsstufe 0 von diesem Code bestand darin, die LIBEVENT-API abzubauen. Die Kernimplementierung ist völlig generisch. Diese generische Implementierung wird dann verwendet, um ein Event_set () / Event_Add () Wrapper: EVENT_DELEGATE () bereitzustellen (). Das Übergeben eines typischen Voids (*) (int, kurz, ungültig *) wird von Event_Delegate () statisch erkannt. In einem solchen Fall ist nur das dritte Argument notwendig; Die ersten beiden sind implizit. Libfi wird in diesem Fall völlig umgangen, indem keine Laufzeitstrafe eingeleitet wird. Dies ist nützlich für die Mikrooptimierung der wenigen Rückrufe, die alle Verkehr erhalten. Moderage: / * Einfaches Beispiel für Delegat () und Rufen (). * / struct delegate del = delegate_initializer; delegate (del, my_func, arg0, arg1, ...); Invoke (DEL); / * Execute Exit (Exit_success) auf Sigterm oder nach 60 Sekunden. * / struct Event_Delegate Event = Event_Delegate_Initializer; INT SIG = Sigerterm; kurze Ereignisse = EV_SIGNAL | EV_PERSIST; struct Timeval Timeout = {60, 0}; Event_Delegate (Ereignis, SIG, Ereignisse, Timeout, EXIT, EXIT_SUCCESS); EVENT_DISPATCH (); a Kleines Regressions-Dienstprogramm kann aus der Quelle erstellt werden. Delegate_Main definieren wird die Definition der Haupt () ausgesetzt. Was ist neu in dieser Version: · Fehler beheben, der das Ereignis kontinuierlich wieder fügt, auch wenn Sie bereits anhängig sind.


Delegate.c. Zugehörige Software

redis_queue.

Eine persistente, (meist) atomare Warteschlange (wie Diskette oder Warteschlange) implementiert mit Redis-Backing ...

132

Herunterladen