Ich suche nach nicht-trivialen Ressourcen zu Konzepten der asynchronen Programmierung, vorzugsweise Bücher, aber auch substantielle Artikel oder Papiere. Es geht hier nicht um einfache Beispiele wie das Übergeben eines Callbacks an einen Ereignis-Listener in der GUI-Programmierung oder das Entkoppeln von Producer-Consumer über eine Warteschlange oder das Schreiben eines Onload-Handlers für Ihren HTML-Code (obwohl alle gültig sind). Es geht um die Art von Problemen, mit denen sich die lighttpd-Entwickler befassen könnten, oder um jemanden, der eine wesentliche Geschäftslogik in JavaScript ausführt, das in einem Browser oder auf node.js ausgeführt wird. Es geht um Situationen, in denen Sie einen Callback an einen Rückruf zu einem Callback übergeben müssen ... über komplexe asynchrone Control-Flows, und zur gleichen Zeit gesund bleiben. Ich suche nach Konzepten, die Ihnen erlauben, dies systematisch zu tun, über diese Art von Kontrollflüssen nachzudenken, eine beträchtliche Menge an Logik, die in tief verschachtelten Callbacks verteilt ist, ernsthaft zu managen, mit all den daraus folgenden Problemen von Timing, Synchronisation, Bindung von Werte, Weitergabe von Kontexten usw.
Ich würde nicht vor abstrakten Erkundungen wie dem Fortsetzungs-Übergehen-Stil, der linearen Logik oder dem zeitlichen Schließen zurückschrecken. Beiträge wie dies scheinen in die richtige Richtung zu gehen, sprechen aber eher über bestimmte Themen als eine vollständige Theorie (zB erwähnt die Post das "Reaktor" -Muster, das relevant erscheint, ohne es zu beschreiben).
Danke.
BEARBEITEN:
Um mehr über die Aspekte zu erfahren, die mich interessieren. Ich interessiere mich für eine disziplinierte Herangehensweise an asynchrone Programmierung, eine Theorie, wenn Sie so wollen, vielleicht nur eine Reihe spezifischer Muster, die ich an andere Programmierer weitergeben und sagen kann "So machen wir asynchrone Programmierung" in nicht-trivialen Szenarien. Ich brauche eine Theorie, um Schichten von Callbacks zu entwirren, die nach dem Zufallsprinzip nicht funktionieren oder falsche Ergebnisse liefern. Ich möchte einen Ansatz, der mir erlaubt zu sagen "Wenn wir es so machen, können wir sicher sein, dass ...". - Macht das die Dinge klarer?
EDIT 2:
Da die Rückmeldung auf eine Abhängigkeit von der Programmiersprache hinweist: Dies ist JavaScript, aber es reicht vielleicht, eine Sprache anzunehmen, die Funktionen höherer Ordnung erlaubt.
EDIT 3:
Ich ändere den Titel, um genauer zu sein (obwohl ich denke, dass Entwurfsmuster nur eine Möglichkeit sind, es zu betrachten; aber es gibt zumindest eine bessere Richtung).
Bei mehrstufigen Callbacks ist das Currying eine nützliche Technik.
Weitere Informationen dazu finden Sie Ссылка und für Javascript können Sie Ссылка .
Wenn Sie mehrere Callback-Schichten haben, anstatt eine massive Parameterliste zu haben, können Sie diese inkrementell aufbauen, so dass die verschiedenen Callback-Funktionen bereits definiert sind, wenn Sie in einer Schleife Ihre Funktion aufrufen bestanden.
Dies ist nicht als vollständige Antwort auf die Frage gemeint, aber ich wurde gebeten, diesen Teil in eine Antwort zu schreiben, also tat ich es.
Nach einer schnellen Suche hier ist ein Blog, wo er mit currying mit Rückrufen zeigt:
UPDATE:
Nach dem Lesen der Bearbeitung der ursprünglichen Frage, um Entwurfsmuster für asynchrone Programmierung zu sehen, kann dies ein gutes Diagramm sein: Ссылка , aber es gibt viel mehr zum guten asynchronen Design, da Funktionen erster Ordnung es ermöglichen Dies zu vereinfachen, aber wenn Sie die MPI-Bibliothek und Fortran verwenden, dann werden Sie verschiedene Implementierungen haben.
Wie Sie an das Design herangehen, wird stark von der Sprache und den beteiligten Technologien beeinflusst, so dass jede Antwort nicht vollständig ist.
Tags und Links asynchronous