Freigeben über


Context::Unblock-Methode

Hebt die Blockierung des Kontexts auf und bewirkt, dass er ausführbar wird.

virtual void Unblock() =0;

Hinweise

Es ist vollkommen zulässig, dass ein Aufruf der Unblock-Methode vor einem entsprechenden Aufruf der Block-Methode erfolgt. Solange Aufrufe der Block-Methode und der Unblock-Methode ordnungsgemäß zugeordnet werden, behandelt die Laufzeit das natürliche Wettrennen beider Sortierungen ordnungsgemäß. Ein Unblock-Aufruf, der vor einem Block-Aufruf stattfindet, negiert den Effekt des Block-Aufrufs.

Es gibt mehrere Ausnahmen, die von dieser Methode ausgelöst werden können. Wenn ein Kontext versucht, die Unblock-Methode für sich selbst aufzurufen, wird eine context_self_unblock-Ausnahme ausgelöst. Wenn Aufrufe von Block und Unblock nicht richtig zugeordnet sind (beispielsweise, sind zwei Aufrufe von Unblock für einen Kontext ausgeführt, der gerade ausgeführt wird), wird eine Ausnahme ausgelöst. context_unblock_unbalanced

Beachten Sie, dass es einen kritischen Zeitraum zwischen dem Punkt gibt, an dem der Code seinen Kontext veröffentlicht, damit ein anderer Thread die Unblock-Methode aufrufen kann, und dem Punkt, zu dem der tatsächliche Aufruf der Block-Methode stattfindet. Während dieses Zeitraums dürfen Sie keine Methode aufrufen, die für seine eigenen Gründe wiederum blockieren und die Blockierung kann (zum Beispiel, eine Sperre abzurufen). Aufrufe der Block-Methode und der Unblock-Methode verfolgen den Grund für die Blockierung und das Befreien nicht. Nur ein Objekt darf ein Block/Unblock-Paar besitzen.

Anforderungen

Header: concrt.h

Namespace: Parallelität

Siehe auch

Referenz

Context-Klasse

Context::Block-Methode

Konzepte

Taskplaner (Concurrency Runtime)