2016-05-30 224 views
1

我们正在开发一个应用程序,需要根据参数值的更改非常频繁地执行某些小操作(表达式评估)。为了执行这些小操作,我们创建了评估和终止的线程。我的问题是,创建大量线程的性能影响会是一个非常小的一生。可以说每秒100到200个线程,其生命周期不会持续超过一秒。在C#中创建大量线程对性能的影响应用程序

线程池的问题是某些操作由于后台线程不可用而不得不等待。这就是为什么在需要时切换到创建新线程的原因。

任何人都可以分享一些在这种情况下的性能影响的见解,并建议是否有更好的方法来实现这一点。谢谢

+1

除非你有100-200核心(并且工作是CPU绑定的 - 看起来是这样),绝对没有理由拥有那么多的线程。 – Rob

+1

首先,从头开始创建一个新线程需要花费成本,而不是从.NET线程池中获取_warm-ready-to-go_线程。如果你的工作很短(如你的情况那样),这个代价会变得相对更加昂贵。 – MickyD

+0

@Rob编码GPU有这种用例吗? –

回答

0

在.Net中创建和销毁线程的事实很简单,并不意味着这些操作的成本是微不足道的。关于处理器内核上的线程调度(上下文切换)也是如此,因此除非在计算机上拥有足够数量的内核,否则您不想过度使用这些内容。

这就是说,我明白你试图做的是已经由.Net TaskScheduler class管理。你所要做的就是使用它。

相关问题