Wie diese zwei (setcontext, Continuation) Konzepte zueinander in Beziehung stehen? Erstellen wir eine Instanz einer Fortsetzung, wenn Sie eine setcontext
Technik verwenden?Ist setcontext-Funktionen in C eine Fortsetzung?
Antwort
Das ucontext_t
Objekt, das Sie über getcontext()
initialisieren, makecontext()
oder swapcontext()
bewahrt den Stapel und CPU-Zustand - aber nicht der Heap - in einer Weise, die später über setcontext()
oder swapcontext()
aktiviert werden kann. Dies ist ähnlich einer Fortsetzung.
Das Subsystem scheint nicht mit der Idee entworfen worden zu sein, Fortsetzungen als solche zu implementieren, aber mehr als eine Verbesserung gegenüber sigsetjmp()
und siglongjmp()
. Kontexte erfassen insbesondere eine Signalmaske, die wiederhergestellt wird, wenn der Kontext aktiviert wird. Jeder Kontext behält auch einen Sinn für einen Kontext bei, der fortgesetzt wird, wenn der aktuelle Kontext endet. In diesem Sinne können Kontexte als von reinen Fortsetzungen abweichend angesehen werden.
Beachten Sie, dass , und sind jetzt alle von POSIX veraltet, für Code einen gültigen Kontext zu erhalten Benutzer keine direkte, nicht veraltet Art und Weise zu verlassen. Ein Signalhandler mit drei Argumenten erhält immer noch eins als drittes Argument, aber es ist ziemlich nutzlos, da der Effekt der Fortsetzung dieses Kontexts absichtlich in den neueren Versionen von SuS/POSIX nicht spezifiziert ist.
- 1. Stackoverflow in Fortsetzung Monade
- 2. sys.getrefcount Fortsetzung
- 3. Was unterscheidet eine Fortsetzung von einer Funktion?
- 4. AVCaptureVideoPreviewLayer zeigt nichts in Fortsetzung
- 5. Fortsetzung (call/cc) in Schema
- 6. Memoize Fortsetzung Stilfunktion übergeben
- 7. Python 2.5.2 Fortsetzung
- 8. Eclipse-Fortsetzung Einzug
- 9. touchesMoved Fortsetzung Punkt?
- 10. Fortsetzung nach fehlgeschlagener Assertion
- 11. svn Fortsetzung abgebrochen Kasse
- 12. Fängt eine Ausnahme und Fortsetzung der Programmausführung eine Best Practice?
- 13. async/Warten auf die Fortsetzung
- 14. Update Textfeld auf Fortsetzung mit Winforms und C#
- 15. Fortsetzung Ninject-Unterstützung in ASP.NET MVC 6?
- 16. Fortsetzung auf einer anderen Aktivität
- 17. Coroutine vs Fortsetzung vs Generator
- 18. Iterate Fortsetzung Abfrage Ergebnismenge (Hapijs)
- 19. Sequentiell erwarten VS Fortsetzung erwarten
- 20. Convert eine Scheme-Call-with-Current-Fortsetzung zu Common Lisp?
- 21. JCL erwartete Fortsetzung erhielt nicht
- 22. Wann und wie fortsetzung verwendet werden Stil
- 23. Wie erstelle ich eine Datenbank mit der Fortsetzung
- 24. Fortsetzung Ereignis Subskription, nach Skriptausführung Powershell
- 25. Fortsetzung nicht Javascript for-Schleife bis angegeben
- 26. Fortsetzung in Visual Studio-Debugger nach einer Ausnahme
- 27. Ist C# eine Hochsprache?
- 28. Stop Fortsetzung von ASP.NET MVC ActionFilter
- 29. Rails - Zwei-Wege „Freundschaft“ -Modell (Fortsetzung)
- 30. Fortsetzung der Musikwiedergabe auch beim Seitenwechsel
Ich wäre versucht zu antworten, dass der Unterschied einfach den verschiedenen Philosophien zwischen funktionaler und prozeduraler Programmierung entspricht: 'setcontext' speichert lokale Daten, weil prozedurale Programme beliebige explizite lokale Daten haben, während Fortsetzungen keine Daten haben sollen weil funktionale Programmierung ist was zu tun ist, nicht wie es geht. Der Punkt ist also, dass Sie durch etwas hindurchgehen, was zu tun ist - was auch immer der Computer dabei angefallen hat, wird wahrscheinlich gespeichert, ist aber nicht semantisch relevant. Aber mein Wissensstand reicht nicht aus, um mich darauf als Antwort zu verlassen. – Tommy