IVirtualProcessorRoot::EnsureAllTasksVisible 方法

使存储在各个处理器内存层次结构中的数据对系统中的所有处理器均可见。 它确保了在方法返回之前对所有处理器都执行了全内存界定。

virtual void EnsureAllTasksVisible(
   IExecutionContext *pContext
) =0;

参数

  • pContext
    当前正由此虚拟处理器根调度的上下文。

备注

当您想要通过向计划程序添加新工作来同步虚拟处理器根的停用时,会发现该方法有用。 出于性能原因,您可能决定将工作项添加到您计划程序,但不执行内存屏障,内存屏障是指当线程在一个处理器上执行时添加的工作项并不立即对所有其他处理器可见。 通过结合使用此方法和 Deactivate 方法,可以确保您的计划程序不会在工作项存在于您的计划程序集合时停用其所有虚拟处理根。

EnsureAllTasksVisibleThe 方法的调用必须源于上次激活所用的虚拟处理器根的执行上下文的 Dispatch 方法中。 也就是,调用 EnsureAllTasksVisible 方法的线程代理必须是当前正在虚拟处理器根上执行的线程代理。 调用虚拟处理器根的方法时,您将不执行可能会导致未定义行为的任务。

如果实参 pContext 的值为 NULL,则会引发 invalid_argument

如果从未激活虚拟处理器根,或者实参 pContext 不表示最近由此虚拟处理器根调度的执行上下文,则会引发 invalid_operation

要求

**标头:**concrtrm.h

命名空间: 并发

请参见

参考

IVirtualProcessorRoot 结构

IVirtualProcessorRoot::Deactivate 方法