小编use*_*273的帖子

C#和C++中的volatile关键字

在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)

c# c++ volatile

3
推荐指数
1
解决办法
680
查看次数

标签 统计

c# ×1

c++ ×1

volatile ×1