码迷,mamicode.com
首页 > Windows程序 > 详细

C# 5.0 与 .Net 4.5 学习(三)Interlocked

时间:2015-10-22 09:15:33      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

Interlocked类是用于对变量进行原子操作的简单语句。如i++不是线程安全,它从内存中获得一个值,然后将这个值加1,然后又将值存回到内存中。这些操作可能被线程调度器中断。Interlocked类就提供了对增、减、改、读的方法的线程安全行为。

使用Interlocked类比其他同步技术更快捷。然而,你只能在简单的同步问题上去使用它。

例如,当赋予someState变量新值时以防值为null我们不使用lock锁,而选择使用更快捷的Interlocked类(代码文件SynchronizationSamples/SharedState.cs):

lock (this)
{
  if (someState == null)
  {
    someState = newState;
  }
}
Interlocked.CompareExchange<SomeState>(ref someState,
newState, null);

使用lock方式:

public int State
{
    get
    {
        lock (this)
        {
            return ++state;
        }
    }
}

 Interlocked方式:

public int State
{
    get
    {
        return Interlocked.Increment(ref state);
    }
}    

 

C# 5.0 与 .Net 4.5 学习(三)Interlocked

标签:

原文地址:http://www.cnblogs.com/huazier/p/4899780.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!