异步操作时需要注意的要点
1.使用异步方法返回值应当避免使用void
在使用异步方法中最好不要使用void当做返回值,无返回值也应使用Task作为返回值,因为使用void作为返回值具有以下缺点
无法得知异步函数的状态机在什么时候执行完毕...ValueTask类型,ValueTask是一个可被等待异步结构,所以并不会在堆中分配内存和任务分配,从而性能更优化....over async 此方式操作步骤如下
1.异步线程启动
2.调用线程调用Result或者Wait()进行阻塞
3.异步完成时,将一个延续代码调度到线程池,恢复等待该操作的代码
虽然看起来并没有什么关系...,但是其实这里却是使用了两个线程来完成同步操作,这样通常会导致线程饥饿和死锁
线程饥饿(starvation):指等待时间已经影响到进程运行,如果等待时间过长,导致进程使命没有意义时,称之为饿死
死锁(...state)
{
_ = DoAsyncPing();
}
private async Task DoAsyncPing()
{
// 异步等待