SupCube

  • 主页
  • 随笔
所有文章 友链 关于我

SupCube

  • 主页
  • 随笔

C#多线程Thread-Task-Parallel用法

2019-06-20 阅读量3320

大家在开发过程中,往往会为了提高用户体验,某些功能会采用异步进行。譬如:一个定时服务,以及用户登录日志等。这些操作在执行过程中用户不需要要等待其执行结束。对此引入了多线程处理方式。在此小编就之前用过的几种方式总结下;

1.Thread用法:
Thread是多线程最基本的操作方式;

using System;
using System.Threading;
namespace TestSupCube
{
class TestSuper
{
  static void TestThread()
  {
   //执行一些列操作  
  }
  static void Main(string[] args)
  {
      Thread mthread = new Thread(TestTrhead);
      mthread.Start();
      Console.WriteLine("SupCube Test Thread");
      Console.ReadLine();
  }
}
}

1.需要首先定义方法。
2.实例化线程引用该方法;
3.启动线程;

2.Task用法:Task是Thread的封装因此用法 几乎一样:

using System;
using System.Threading.Tasks;
namespace TestSupCube
{
class TestSuper
{
    static void TestTask()
    {
     //执行一些列操作  
    }
    static void Main(string[] args)
    {
    Task mtask = new Task(TestTask);
    mtask.Start();
    Console.WriteLine("SupCube Test Task");
    Console.ReadLine();
    }
}
}

=============================缺省方法如下:=====================================

   static void Main(string[] args)
{
    Task mtask = new Task(() =>
        {
            //执行一些列操作  
        });
    mtask.Start();
    Console.WriteLine("SupCube Test Thread");
    Console.ReadLine();
}

Task是支持多核的因此如果是多核cpu效率很高很多;
3.Parallel用法:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace TestSupCube
{
class TestSuper
{
    static void TestTask(int num)
    {
        //执行一些列操作  
    }
    static void Main(string[] args)
    {
        List<string> listtask = new List<string>() { 1, 2, 3, 4, 5 };
        Parallel.ForEach(listtask, new ParallelOptions
        {
            MaxDegreeOfParallelism = 3//开启线程数
        },
        x =>
        {
            TestTask(x);
        });
        Console.WriteLine("SupCube Test Parallel");
        Console.ReadLine();
    }
}
}

Parallel适用于:
并行处理多个作业,内部支持线程数控制;

赏

谢谢你请我吃糖果

支付宝
微信

扫一扫,分享到微信

微信分享二维码
SQL Server创建事务
Sqlserver操作提示主体“dbo”不存
京公网安备11011102002544 © 京ICP备2024068849号-1
智汇魔方:http://www.supcube.com
  • 所有文章
  • 友链
  • 关于我
  • 切水果
  • json格式化
  • 自动分组
  • 集合差集