C# 多线程Interlocked类保证原子操作

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading ; namespace 多线程 { class 简单语句原子化 { public static void Main() { //Interlocked类提供了一些简单的同步运算功能,比如++ --等。 // Increment()方法递增一个变量,把结果存在一个原子操作中 Person per = new Person() ; for( int i = 0 ; i < 30 ; i ++ ) { new Thread( DoIncermentThread ) .Start( per ) ; } Console.WriteLine( per.Age ) ; Thread.Sleep( 1000 ) ; Console.WriteLine(per.Age); Thread.Sleep(1000); Console.WriteLine(per.Age); Thread.Sleep(1000); Console.WriteLine(per.Age); Thread.Sleep(1000); Console.WriteLine(per.Age); Thread.Sleep(1000); Console.WriteLine(per.Age); Console.ReadLine() ; } public static void DoIncermentThread( object per ) { Person p = ( Person ) per ; for( int i = 0 ; i < 1000000 ; i ++ ) { p.IncermentAge() ; } } class Person { private int _age; public int Age { get { return _age; } } public int IncermentAge() { return Interlocked.Increment( ref this._age ) ; //如果用++有可能是会被线程中断的,为了保证同步,可以用lock。。效率更高一点的是用Increment方法 //return ++ this._age ; } } } }

你可能感兴趣的:(thread,多线程,object,C#,Class)