await后紧跟一个task这个任务类型 不管是系统定义的还是自己写的都要是task类型 因为只要是task类型就肯定是异步方法 就有可能会等待但肯定不会被阻塞 等待是因为在执行task类型里的方法
task类型如果是系统定义的为了防止被阻塞有可能会在系统自己的方法里新开了一个线程以保证异步方法不会被阻塞
如果是自己写的task类型要自己新建一个线程以保证异步方法不会被阻塞
async是一定会另开一个线程 不管是await后面等待的这个task类型方法是系统的方法 还是自己写的task类型的方法 一定是会在这个方法里开一个线程 要不就会阻塞
异步async提高并发很正常 异步是为了程序本身不卡 加锁是为了多个请求请求同一个数据的时候不被死锁 只能单线程执行 这样效率慢但是保证了程序不会被死锁
异步是为了保证程序本身的流畅 不会被阻塞
假设有个webAPIi有两个接口A个B 假设(夸张点)用同步的方法请求A接口要30秒 请求B接口要20秒 当请求A接口的时候 在A接口执行20秒的时候请求B接口 请问这是B接口会马上执行吗 肯定要等到A接口执行完成才会执行B接口
但是用异步async的方法就两个接口都可以同时执行 这就提高了系统的并发效率。