链式异步方法-绑定线程POV

本文关键字:线程 POV 绑定 异步方法 | 更新日期: 2023-09-27 18:00:30

假设我有这个代码:

public void AAA()
{    
    BBB(); 
}  
public async Task BBB() 
{ 
    await Task.Delay(10000); 
}  

IMHO,在正常模式下,方法AAA也应该是async,这样主线程将在不等待的情况下继续其作业。

但关于这种情况,我有两个问题:

  1. 上面的代码确实将线程绑定了10秒,这正确吗?(我怀疑答案是肯定的,因为AAA不是异步的,所以没有注册继续)

  2. 如果是,我如何通过代码来证明它?

链式异步方法-绑定线程POV

上面的代码确实将线程绑定了10秒,这正确吗?

没有。

AAA调用BBB,后者设置一个Task并立即返回。由于AAABBB上没有await,因此它也会立即返回。因此,"你自己"的思路并没有被束缚住。

Task.Delay的"实现"本身使用了定时器,而不是阻塞线程,因此在任务的持续时间内,任何线程池线程都不会被占用。