C# - 数据库密集型应用程序的多核线程

时间:2009-09-23 18:20:40

标签: c# database multithreading multicore

我有一个应用程序,需要在数据库端进行一些验证。每个进程都经过数据库验证(在具有大约600万条记录的表上搜索),然后通过一些Lucene Index搜索器(索引是根据这个600万条记录表构建的)。 由于这些步骤与传递的每个订单项不相交,我正在考虑使用多核线程。 (这些行中的每一行在单个线程上花费大约1/2分钟。)

在C#中,我对多核的选择是什么? 是否有一些很好的资源/第三方库(我看过Jeff Ritcher的PowerThreading),一些很好的教程。

我假设我需要在N个核心机器中做一些线程池。

目前,处理100行需要大约40秒,希望将其完成大约10秒。

...谢谢

3 个答案:

答案 0 :(得分:1)

你有没有看过F#

它是从头开始设计的,用于并行化任务。

答案 1 :(得分:1)

简单threading可让您访问多核。您将不得不使用线程池的大小,因为您的任务看起来也有很多IO。

答案 2 :(得分:0)

如果你想要一个四倍的速度因子并拥有四个核心,你需要做的就是避免任务之间的依赖关系,这听起来是可行的。我想你会发现你实际上想要运行比核更多的线程,因为在任何给定的时间,都会阻塞许多线程等待I / O.因此,我建议,无论使用哪种方法,都要确保使用不同的线程数对其进行基准测试很容易。