C#-并行编程的概念及其运用

目录

一、介绍

二、并行编程

1、Parallel类

2、Timer类

 1、使用Timer类


一、介绍

并行编程实际就是同一时间处理不同任务,可分为数据并行性(在不同任务间同时处理相同数据)和任务并行性(同时执行不同的功能),通常使用多线程来实现,可设置线程优先级;

.NET提供了线程的一个抽象机制Task任务,任务允许建立任务间的关系;

注意:同一时刻访问相同数据,容易出现同步问题,要避免同步问题,最好不要在线程之间共享数据,若需要共享数据,需使用同步技术,确保一次只有一个线程访问和改变共享状态,若不注意同步问题,容易出现争用条件和死锁;

通过关键字async和await来使用异步方法、Parallel LINQ(并行LINQ,提供了任务并行性的一个变体)、以及Task相关内容在进阶篇都有介绍,这不再过多讲解:C#基础与进阶扩展合集-进阶篇

二、并行编程

1、Parallel类

  1. Parallel类是对线程很好的抽象,提供数据和任务并行性;
  2. 定义了并行的for、foreach、invoke三个静态方法,使用多任务完成作业;
  3. for方法迭代的顺序没有定义,提供重载版本第三个参数Action,委托方法内可调用ParallelLoopState的Break()或Stop()方法控制中断,以改变循环结果,还提供可初始化的重载(每个线程调用一次);
  4. foreach方法以异步方式遍历,也没有确定遍历顺序;
  5. Invoke()静态方法实现并行调用多个方法,该方法允许传递Action委托的数组,无确定顺序;
        List list = new() { "111", "222", "333", "444" };
        Parallel.ForEach(list, x => Console.WriteLine(x));
        Parallel.For(0, 5, i => Console.WriteLine(i));
        Parallel.For(0, 10, (i, s) =>
        {
            if (i % 2 == 0)
            {
                s.Break();
                Console.WriteLine("break now {0}", i);
            }
            Console.WriteLine(i);
        });
        Parallel.Invoke(FuncA, FuncB, FuncC);

2、Timer类

常用的两个计时器,System.Threading.Timer类和用于基于XAML应用程序中的Microsoft.UI.Xaml.DispatcherTimer

 1、使用Timer类

构造器传参:

  • 参数1:传递一个满足返回void和1个object参数的CallBack;
  • 参数2:任意类型对象,用回调方法中的object接收;
  • 参数3:指定第一次调用回调方法时的时间段;
  • 参数4:指定回调的重复时间间隔

你可能感兴趣的:(C#基础与进阶,c#,开发语言)