C#使用Parallel类进行多线程编程实例

本文实例讲述了C#使用 Parallel 类进行多线程编程的方法。分享给大家供大家参考。具体如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace Threads
{
  class Program
  {
    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern int GetCurrentProcessorNumber();
    private static int criticalSection = 0;
    private static object lockObject = new object();
    static void Main(string[] args)
    {
      Console.WriteLine("==================Sequential calls==============");
      Console.WriteLine();
      Target();
      Target();
      Target();
      Target();
      Target();
      Target();
      Target();
      Target();
      Console.WriteLine();
      Console.WriteLine("==================Parallel calls==============");
      Console.WriteLine();
      Action action = new Action(Target);
      Parallel.Invoke(new Action[] { action, action, action, action, action, action, action, action });
      Console.ReadKey();
    }
    private static void Target()
    {
      Thread.Sleep(2000);
      lock (lockObject)
      {
        criticalSection++;
        Console.WriteLine(string.Format("Thread ID: {0} and Processor ID: " + 
         "{1} Critical Variable Value: {2}", 
         Thread.CurrentThread.ManagedThreadId, 
         GetCurrentProcessorNumber(), criticalSection));
      }
    }
  }
}

希望本文所述对大家的C#程序设计有所帮助。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。