c# 线程

在以下几种情况下,适合于创建并管理自己的线程而不是使用线程池线程:

  • 需要前台线程。

  • 需要使线程具有特定的优先级。

  • 您的任务会导致线程长时间被阻塞。 由于线程池具有最大线程数限制,因此大量阻塞的线程池线程可能会阻止任务启动。

  • 需要将线程放入单线程单元。 所有 ThreadPool 线程均处于多线程单元中。

  • 您需要具有与线程关联的稳定标识,或使某一线程专用于某一任务。

线程池线程是后台线程。 请参见前台和后台线程每个线程都使用默认堆栈大小,以默认的优先级运行,并处于多线程单元中。

每个进程只有一个线程池对象。

从 .NET Framework 4 开始,使用线程池最简单的方式是使用任务并行库默认情况下,TaskTask<TResult> 等并行库类型使用线程池线程运行任务。 还可通过如下方式使用线程池:从托管代码调用 ThreadPool.QueueUserWorkItem(或从非托管代码调用 CorQueueUserWorkItem)并传递表示执行任务的方法的 WaitCallback 委托。 使用线程池的另一种方式是:通过使用 ThreadPool.RegisterWaitForSingleObject 方法并传递 WaitHandle(在向其发出信号或超时时,它将调用 WaitOrTimerCallback 委托表示的方法)来对与等待操作相关的工作项排队。 线程池线程用于调用回调方法。

posted @ 2014-07-07 17:13  英雄饶命啊  阅读(139)  评论(0)    收藏  举报