博学而笃志 切问而近思 仁在其中
详情
.Net Task与线程
作者:Aliot     发布时间:2020-08-03 03:43:00     评论:0     阅读:26

Task是基于线程池调度的,不过微软说不要把Task理解为线程之上的抽象,要把它理解为异步工作的抽象

List<int> tid = new List<int>();
for (int i = 0; i < 100; i++)
{
	ThreadPool.QueueUserWorkItem((state) =>
	{
	    int id = Thread.CurrentThread.ManagedThreadId;
	    if (tid.Contains(id))
	    {
		Console.WriteLine($"{id} reuse " + tid.Count());
	    }
	    else
	    {
		tid.Add(id);
		Console.WriteLine($"{id} new " + tid.Count());
	    }
	});
	Thread t = new Thread(() =>
	{
	    int id = Thread.CurrentThread.ManagedThreadId;
	    if (tid.Contains(id))
	    {
		Console.WriteLine($"{id} reuse " + tid.Count());
	    }
	    else
	    {
		tid.Add(id);
		Console.WriteLine($"{id} new " + tid.Count());
	    }
	});
	t.Start();
	Task<int> t = new Task<int>(() =>
	{
	    int id = Thread.CurrentThread.ManagedThreadId;
	    if (tid.Contains(id))
	    {
		Console.WriteLine($"{id} reuse " + tid.Count());
	    }
	    else
	    {
		tid.Add(id);
		Console.WriteLine($"{id} new " + tid.Count());
	    }
	    return 10;
	});
	t.Start();
	Task<int>.Factory.StartNew(() =>
	{
	    int id = Thread.CurrentThread.ManagedThreadId;
	    if (tid.Contains(id))
	    {
		Console.WriteLine($"{id} reuse " + tid.Count());
	    }
	    else
	    {
		tid.Add(id);
		Console.WriteLine($"{id} new " + tid.Count());
	    }
	    //Thread.Sleep(0);
	    return 10;
	});
}

相关文章
loading......
最新动态
所有评论

loading......

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册