C#多线程同步问题---使用interlocked类

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5: using System.Threading;
   6: using System.Threading.Tasks;
   7:  
   8: namespace SynchronizationSamples
   9: {
  10:     public class SharedState
  11:     {
  12:         private int state = 0;
  13:         private object syncRoot = new object();
  14:         public int State 
  15:         { 
  16:             get{return state;}
  17:             set { state = value; }
  18:         }
  19:  
  20:         public int IncrementState()
  21:         {
  22:             return Interlocked.Increment(ref state);
  23:  
  24:         }
  25:     }
  26:  
  27:     public class Job
  28:     {
  29:         SharedState sharedState;
  30:         public Job(SharedState sharedState)
  31:         {
  32:             this.sharedState = sharedState;
  33:         }
  34:  
  35:         public void DoTheJob()
  36:         {
  37:             for (int i = 0; i < 50000;i++ )
  38:             {
  39:                sharedState.IncrementState();
  40:             }
  41:         }
  42:     }
  43:     class Program
  44:     {
  45:         static void Main(string[] args)
  46:         {
  47:             int numTasks = 20;
  48:             var state = new SharedState();
  49:             var tasks = new Task[numTasks];
  50:  
  51:             for (int i = 0; i < numTasks; i++)
  52:             {
  53:                 tasks[i] = new Task(new Job(state).DoTheJob);
  54:                 tasks[i].Start();
  55:             }
  56:  
  57:             for (int i = 0; i < numTasks;i++ )
  58:             {
  59:                 tasks[i].Wait();
  60:             }
  61:             Console.WriteLine("summarized {0}",state.State);
  62:             Console.Read();
  63:         }
  64:     }
  65: }

转载于:https://www.cnblogs.com/jerry01/archive/2012/12/12/2708815.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值