如果我有类似这样的代码:
ManualResetEvent me = new ManualResetEvent(false);
. . .
int a = 10;
. . .
me.WaitOne();
. . .
假设a
是在 CPU 缓存中赋值后,会调用 WaitOne 将其刷新到 RAM 中吗?
或者(更重要的是)
从 .NET 访问内核同步对象(如 WaitHangle)会导致 CPU 缓存刷新/内存屏障吗?
或者
切换到内核模式是否需要内存屏障?
如果我有类似这样的代码:
ManualResetEvent me = new ManualResetEvent(false);
. . .
int a = 10;
. . .
me.WaitOne();
. . .
假设a
是在 CPU 缓存中赋值后,会调用 WaitOne 将其刷新到 RAM 中吗?
或者(更重要的是)
从 .NET 访问内核同步对象(如 WaitHangle)会导致 CPU 缓存刷新/内存屏障吗?
或者
切换到内核模式是否需要内存屏障?