关于异步编程入门的一些知识

1. 在 .NET 1.0 1.1 的时候 Thread的缺陷:线程资源是操作系统的,响应并不灵敏(挂起suspend,恢复resume);启动线程是没有控制的,可能导致死机(同时生成几万个线程)
2. 在多线程第二代 .NET 2.0 推出了线程池的容器。优点是 1.线程复用。 2.可以限制线程的数量。 缺点是:相比于第一代可用API太少了,线程等待顺序控制特别少。
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前面,并且该包含await的方法必须声明async,不能单独出现。
  3. await/async之后,原本没有返回值的,可以返回Task;原本返回X类型的,必须返回Task<X>

关于多线程的安全问题:一段代码,单线程执行和多线程执行结果不一致(或者程序员不知道该段代码的运行结果),就表明有线程安全问题。

posted @ 2022-08-08 13:28  Niwde  阅读(37)  评论(0)    收藏  举报