Threading.Sleep with System.Threading.Tasks

时间:2011-05-09 08:36:29

标签: c# multithreading task-parallel-library

如果我将System.Threading.Thread.Sleep()放入以TaskFactory.StartNew()启动的Task中会发生什么? 它是否将执行线程本身置于休眠状态,或者当第一个线程处于休眠状态时,此线程是否会执行另一个任务?

我问这个是因为我正在研究服务器,它有时必须等待从其客户端接收数据,如果我把任务睡着了,这是处理客户端连接,我想知道是否执行此特定任务的线程然后能够处理另一个连接,而第一个连接等待数据。

1 个答案:

答案 0 :(得分:2)

Thread.Sleep 始终使当前执行的线程休眠,无论该线程是否正在执行任务。

没有任务睡眠的概念 - 只有一个线程。当然线程池将允许多个线程执行,因此您可能最终会得到比实际需要更多的线程。

听起来您可能想要异步等待数据,在数据可用时继续完成任务的其余工作。

C#5的异步方法将使所有这些 lot 更简单。