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