我知道在 java 中,如果您有多个线程访问未标记为 volatile 的变量,则可能会出现一些意外行为。
例子:
private boolean bExit;
while(!bExit) {
checkUserPosition();
updateUserPosition();
}
如果将 bExit 变量标记为 voilatile,则可以保证其他线程将看到最新的值。
c# 的行为方式是否相同?
更新
例如,在 C# 中,如果您这样做:
int counter = ...;
for(...)
{
new Thread(delegate()
{
Interlocked.Decrement(ref counter);
}
}
if(counter == 0)
{
// halt program
}
在上面,在 c# 中,您是否必须将计数器变量标记为 volatile 或者这将按预期工作?