如果我将System.Threading.Thread.Sleep()放入以TaskFactory.StartNew()启动的Task中会发生什么? 它是否将执行线程本身置于休眠状态,或者当第一个线程处于休眠状态时,此线程是否会执行另一个任务?
我问这个是因为我正在研究服务器,它有时必须等待从其客户端接收数据,如果我把任务睡着了,这是处理客户端连接,我想知道是否执行此特定任务的线程然后能够处理另一个连接,而第一个连接等待数据。
答案 0 :(得分:2)
Thread.Sleep
始终使当前执行的线程休眠,无论该线程是否正在执行任务。
没有任务睡眠的概念 - 只有一个线程。当然线程池将允许多个线程执行,因此您可能最终会得到比实际需要更多的线程。
听起来您可能想要异步等待数据,在数据可用时继续完成任务的其余工作。
C#5的异步方法将使所有这些 lot 更简单。