Поделиться через


Метод Context::Unblock

Разблокирует контекст и приводит к его готовности к запуску.

virtual void Unblock() =0;

Заметки

Вполне допустимо для вызова метода Unblock произойти до соответствующего вызова метода Block. Если вызовы методов Block и Unblock правильно спарены, среда выполнения правильно обрабатывает машинную гонку любого порядка. Вызов Unblock, поступающий прежде, чем вызов Block, просто отменяет эффект вызова Block.

Существует несколько исключений, которые могут создаваться из этого метода. Если контекст пытается вызвать метод Unblock на себя, будет создано исключение context_self_unblock. Если вызовы к Block и Unblock не связаны правильно в пары (например: два вызова к Unblock осуществляются для выполняющегося контекста), будет создано исключение context_unblock_unbalanced.

Имейте в виду, что существует критический период между точкой, где код публикует его контекст для другого потока, чтобы иметь возможность вызвать метод Unblock и точкой, где производится фактический вызов метода Block. Во время этого периода не следует вызывать любой метод, который может блокировать и разблокировать по своим собственным причинам (например, захват блокировки). Вызовы методов Block и Unblock не отслеживают причины блокировки и разблокирования. Только один объект должен быть владельцем пары Block и Unblock.

Требования

Заголовок: concrt.h

Пространство имен: concurrency

См. также

Ссылки

Класс Context

Метод Context::Block

Основные понятия

Планировщик задач (среда выполнения с параллелизмом)