C#多線程同步問題—使用interlocked類

來源:互聯網
上載者:User
   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: }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.