作者:平凡天使心619 | 来源:互联网 | 2023-08-10 15:06
1.在.NET1.01.1的时候Thread的缺陷:线程资源是操作系统的,响应并不灵敏(挂起suspend,恢复resume);启动线程是没有控制的,可能导致死机(同时生成几万个线
1. 在 .NET 1.0 1.1 的时候 Thread的缺陷:线程资源是操作系统的,响应并不灵敏(挂起suspend,恢复resume);启动线程是没有控制的,可能导致死机(同时生成几万个线程)
2. 在多线程第二代 .NET 2.0 推出了线程池的容器。优点是 1.线程复用。 2.可以限制线程的数量。 缺点是:相比于第一代A可用PI太少了,线程等待顺序控制特别少。
3. 在.NET 4.0 推出了Task。优点:线程全部来源于线程池,提供了丰富的API
4. 在C# 5.0 (.NET 4.5 (CLR 4.0))时出现了个新语法 即await/async 。它们两个只是一个语法题(编译器提供的新功能),并不是一个全新的异步多线程使用方式。它们本身并不会产生新的线程,但是依托于Task而存在。
1. async可以随便添加,可以不用await。
2. await只能出现在task前面,但是方法必须声明async,不能单独出现。
3. await/async之后,原本没有返回值的,可以返回Task;原本返回X类型的,必须返回Task
关于多线程的安全问题:一段代码,单线程执行和多线程执行结果不一致(或者程序员不知道该段代码的运行结果),就表明有线程安全问题。
本文来自博客园,作者:Niwde,转载请注明原文链接:https://www.cnblogs.com/Niwde/p/16561497.html