在C++中,我教会使用volatile关键字变量(myVar),即使在关键部分也可以使用不同的线程.但对于C#,我在MSDN中读到了这个奇怪的短语:"volatile修饰符通常用于多个线程访问的字段,而不使用lock语句来序列化访问." 这句话是否意味着如果我处于锁定状态,那么不需要使用volatile关键字?如果是,那么还有一个问题:可能是我必须锁定exect这个变量(myVar)?
Object a = new Object();
double i,k;
Thread1()
{
lock(a)
{
i++;// using variable i.
k++;// using variable k.
}
}
Run Code Online (Sandbox Code Playgroud)
Thread2也是如此.我和k没有波动是否安全,或者我必须这样做?:
lock(i)
{
i++;// using variable i.
}
lock(k)
{
k++;// using variable k.
}
Run Code Online (Sandbox Code Playgroud)