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