Stornierung der kündigung Muster

Eine Aufgabe, die in einer anderen Aufgabe (d. h. einer geschachtelten Aufgabe) erstellt wird, erbt nicht das Abbruchtoken der übergeordneten Aufgabe. Nur eine wertbasierte Fortsetzung erbt das Abbruchtoken seiner Vorgängeraufgabe. Wenn Sie Abbruchtoken verwenden, verwenden Sie die parallelcurrency::cancellation_token_source::cancel-Methode, um den Abbruch zu initiieren, und die Parallelität::cancel_current_task-Funktion, um auf Denerzugung zu reagieren. Verwenden Sie die parallel::cancellation_token::is_canceled-Methode, um zu überprüfen, ob eine andere Aufgabe einen Abbruch angefordert hat. Das allgemeine Muster für die Implementierung des kooperativen Abbruchmodells besteht aus zwei Komponenten: Verwenden Sie für Aufgabengruppen und parallele Algorithmen die Funktion concurrency::is_current_task_group_canceling, um Abbruch und Rückgabe so schnell wie möglich aus dem Aufgabentext zu erkennen, wenn diese Funktion true zurückgibt. (Rufen Sie cancel_current_task aus einer Taskgruppe nicht auf.) Verwenden Sie die parallelcurrency::cancellation_token::none-Methode, wenn Sie einen Konstruktor oder eine Funktion aufrufen, die ein cancellation_token Objekt saniert, aber Sie möchten nicht, dass der Vorgang kannbar sein. Wenn Sie kein Abbruchtoken an den Concurrency::task-Konstruktor oder die Concurrency::create_task-Funktion übergeben, kann diese Aufgabe nicht mehr ausgeführt werden. Wenn eine Taskgruppe abgebrochen wird, können Aufrufe von jedem untergeordneten Task in die Laufzeit einen Unterbrechungspunkt auslösen, wodurch die Laufzeit ausgelöst wird und ein interner Ausnahmetyp abgefangen wird, um aktive Aufgaben abzubrechen.

Die Concurrency Runtime definiert keine bestimmten Unterbrechungspunkte. sie können bei jedem Aufruf der Laufzeit auftreten. Die Laufzeit muss die Ausnahmen behandeln, die sie auslöst, um einen Abbruch durchzuführen. Behandeln Sie daher keine unbekannten Ausnahmen im Aufgabentext. Es wird empfohlen, Ausnahmen zu verwenden, um parallele Arbeiten nur bei Bedarf abzubrechen. Abbruchtoken und die Taskgroup-Abbruchmethoden sind effizienter und weniger fehleranfällig. Hier wird der Thread nicht für Parallelität verwendet. es ist nur eine umständliche Möglichkeit, Den Umfang der Stornierung zu begrenzen. Das Heraufstehen der Abbruchbedingung auf ein erstklassiges Objekt erleichtert die Verwendung unserer Timeout-API und macht sie gleichzeitig dramatisch leistungsfähiger: Jetzt können wir nicht nur Timeouts, sondern auch willkürliche Stornierungen behandeln, was eine sehr häufige Anforderung beim Schreiben von gleichzeitigem Code ist.

Comments are closed, but trackbacks and pingbacks are open.