1

在网上,关于如何实现“一劳永逸”模式存在非常不同的意见。

有人说,如果必须实现一种即发即弃模式,那么在不调用 EndInvoke 的情况下调用 BeginInvoke 是没有问题的。

其他人说最好创建一个单独的 ThreadPool 对象。我担心的是 ThreadPool 初始化成本。具体来说,调用的方法只是将对象添加到队列中然后返回。

为此,在池上创建线程或简单地同步调用方法是“更快”吗?我想知道一个粗略的工作阈值,这比在池上创建线程更昂贵。

是否有这方面的任何文件,以及在池中捕获异常和其他限制条件呢?

4

1 回答 1

2

使用 ThreadPool 时,您不会“在池中创建线程”,而是使用预先存在的 Thread 或等待一个可用线程。

只有当许多作业都在等待时,池才会添加另一个线程,但是那个线程会被很好地利用。

更好地使用任务(Fx4 和更高版本)。

于 2011-10-03T21:02:29.630 回答