Www.helper3.com
热门关键字: php net javascript java
博学而笃志 切问而近思 仁在其中
详情
.Net Task与线程
作者:Aliot     发布时间:2020-08-03 03:43:00     阅读:3

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......
滚动到顶部 滚动到底部
网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
QQ群:570078429
网站备案号:
粤ICP备17073857号