1.Thread 【线程】
不断创建 Thread 会消耗很大的cup 导致 异步效率变慢
2.delegate【委托异步】
由于需要不断的实例化 委托类 将会消耗cup 和 内存
3.Task 【结合 async】
这种是三种中性能最好的 较低的cup和内存损耗
下面是例子:
#region 委托异步 和 asycn 异步进行对比
/// <summary>
/// 运行
/// </summary>
/// <param name="count"></param>
static void Run(int count)
{
// TestTreed( count);
TestAsycnTask(count);
// TestDelegate(count);
}
/// <summary>
/// 损耗cup 而且创建速度慢
/// </summary>
/// <param name="count"></param>
static void TestTreed(int count)
{
for (int i = 0; i < count; i++)
{
// Console.WriteLine("开始计算");
new Thread(a =>
{
Console.WriteLine(i);
}).Start();
}
}
//***************Task 部分
/// <summary>
/// Task异步
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
static async Task<int> AsyncTask(int i)
{
// await Task.Delay(1500);
Console.WriteLine(i);
return i;
}
/// <summary>
/// 测试 asycn 只会消耗小部分 cup
/// </summary>
/// <param name="count"></param>
static void TestAsycnTask(int count)
{
for (int i = 0; i < count; i++)
{
// Console.WriteLine("开始计算");
AsyncTask(i);//直接就异步了
}
}
//********************************委托部分
private delegate int _delegate(int i);
/// <summary>
/// 因为创建 委托 所以会消耗内存 和cup
/// </summary>
/// <param name="count"></param>
static void TestDelegate(int count)
{
for (int i = 0; i < count; i++)
{
var d = new _delegate(Delegte);
var r = d.BeginInvoke(i, null, null);
}
}
/// <summary>
/// 委托函数
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
static int Delegte(int i)
{
Console.WriteLine(i);
return i;
}
#endregion