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


Метод IVirtualProcessorRoot::EnsureAllTasksVisible

Приводит к тому, что данные, хранящиеся в иерархии памяти отдельных процессоров, становятся видимыми для всех процессоров в системе. Это гарантирует, что полная памяти граница была выполнена на всех процессорах перед возвратом метода.

virtual void EnsureAllTasksVisible(
   IExecutionContext *pContext
) =0;

Параметры

  • pContext
    Контекст, который является в настоящий момент осуществляемым этим корнем виртуального процессора.

Заметки

Эти методы могут оказаться полезными при необходимости синхронизации деактивации корня виртуального процессора с добавлением новой работы в планировщик. Для повышения производительности можно добавлять рабочие элементы на планировщик без выполнения барьера памяти, что означает, что рабочие элементы, добавленные потоком, выполняющимся на одном процессоре, не видны сразу для всех процессоров. С помощью этого метода в сочетании с методом Deactivate можно обеспечить, что ваш планировщик не выполняет деактивирование всех его корней виртуальных процессоров, а рабочие элементы существуют в коллекциях на планировщике.

Вызов метода EnsureAllTasksVisibleThe должен инициироваться в методе Dispatch контекста выполнения, с которым корневой виртуальный процессор последний раз был активирован. Другими словами прокси поток, вызывающий метод EnsureAllTasksVisible, должен быть тот, который в настоящее время выполняется на корневой виртуальный процессор. Вызов метода на корневой виртуальный процессор, который не выполняется, может привести к неопределенному поведению.

invalid_argument выбрасывается, если аргумент pContext имеет значение NULL.

invalid_operation выбрасывается, если корень виртуального процессора не активирован или аргумент pContext не представляет контекст выполнения, который был отправлен недавно этим корневой виртуальный процессор.

Требования

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

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

См. также

Ссылки

Структура IVirtualProcessorRoot

Метод IVirtualProcessorRoot::Deactivate