다음을 통해 공유


IVirtualProcessorRoot::EnsureAllTasksVisible 메서드

시스템에 있는 모든 프로세서가 볼 수 있도록 개별 프로세서의 메모리 계층에 데이터가 저장됩니다.메서드를 반환하기 전에 모든 처리기에서 전체 메모리 펜스가 실행되도록 합니다.

virtual void EnsureAllTasksVisible(
   _Inout_ IExecutionContext *pContext
) =0;

매개 변수

  • pContext
    현재 이 가상 프로세서 루트에 의해 디스패치되는 컨텍스트입니다.

설명

새 작업을 스케줄러에 추가한 상태에서 가상 프로세서 루트의 비활성화를 동기화할 때 이 메서드를 유용하게 사용할 수 있습니다.성능상의 이유로 메모리 장벽을 실행하지 않고 스케줄러에 작업 항목을 추가하기로 결정할 수 있으며, 이는 한 프로세서에서 실행되는 스레드가 추가한 작업 항목은 다른 모든 프로세스가 즉시 볼 수 있음을 의미합니다.Deactivate 메서드와 함께 이 메서드를 사용하면 스케줄러가 모든 가상 프로세서 루트를 비활성화하지 않도록 할 수 있지만 스케줄러의 컬렉션에는 작업 항목이 존재합니다.

EnsureAllTasksVisibleThe 메서드에 대한 호출은 가상 프로세서 루트가 마지막으로 활성화된 실행 컨텍스트의 Dispatch 메서드 내에서 시작되어야 합니다.즉, EnsureAllTasksVisible 메서드를 호출하는 스레드 프록시는 현재 가상 프로세서 루트에서 실행되고 있는 것이어야 합니다.실행되고 있지 않은 가상 프로세서 루트에서 메서드를 호출하면 정의되지 않은 동작이 발생할 수 있습니다.

인수 pContext에 값 NULL이 있는 경우 invalid_argument가 throw됩니다.

가상 프로세스 루트가 활성화되지 않았거나 인수 pContext가 이 가상 프로세서 루트에 의해 최근 디스패치된 예외 컨텍스트를 나타내지 않은 경우 invalid_operation이 throw됩니다.

요구 사항

헤더: concrtrm.h

네임 스페이스: 동시성

참고 항목

참조

IVirtualProcessorRoot 구조체

IVirtualProcessorRoot::Deactivate 메서드