向后台工作人员分配工作量

时间:2018-11-15 01:57:15

标签: c# backgroundworker

使用C#。

我有100,000多条测试数据,需要进行一些计算。我的实际数据集将包含数百万条数据。测试数据当前按顺序运行,大约需要一分钟的时间来处理。我想把这项工作分解开来,让背景工作人员来回处理,所以我希望可以更快地完成处理。

我要记住的是对数据进行一个foreach循环,并对每个数据启动一个背景工作人员。我知道我需要将bw的数量限制为三个,因为我在这台机器上有4个内核。我已经用简单的bw进行了一些测试,但没有同时进行三个测试。

我不知道该怎么做。一个人将如何执行三个后台工作人员来处理这些数据?

1 个答案:

答案 0 :(得分:0)

BackgroundWorker主要用于早期学习工作。也许是奇怪的替代线程方案。您正在做的事情听起来像是一种非常先进的方法。您仍然可以使用BGW,但此时最好使用原始线程,任务,线程池等。

还有一个普遍的问题,即是否可以使用多线程来加速此操作。我喜欢说“多线程必须仔细选择它的问题”。在错误的情况下选择它,最终您的程序需要更多的内存,比单个BGW或顺序程序需要更多的内存,并且更容易出错并且 slower

您的情况可能是pleasingly paralell操作的罕见情况之一。或者它可能主要受内存限制。 Wich表示您几乎立即会遇到Paralell slowdown。 Resist避免硬编码线程数。通常,您可以将负载平衡工作留给ThreadPool。为了获得更好的答案,您需要更加具体。