C# 并行化批处理应用程序

C# 并行化批处理应用程序,c#,.net,xml,parallel-processing,C#,.net,Xml,Parallel Processing,我目前正在开发一个解析巨大XML文件的应用程序 对于每个文件,将有不同的进程,但所有进程都将解析为单个对象模型 目前,从每个XML文件解析的对象将进入单个集合 解析过程中也会使用此集合,例如,如果已存在类似的对象,则它将修改对象的属性,例如添加计数 在这个应用程序运行时查看CPU图,很明显,它一次只使用一个CPU核心的一部分(100%),因此我假设并行运行它将有助于缩短运行时间 我是并行编程新手,非常感谢您的帮助。我建议您考虑使用线程而不是并行编程 我建议使用并行库,而不是自己管理线程(这可能是

我目前正在开发一个解析巨大XML文件的应用程序

对于每个文件,将有不同的进程,但所有进程都将解析为单个对象模型

目前,从每个XML文件解析的对象将进入单个集合

解析过程中也会使用此集合,例如,如果已存在类似的对象,则它将修改对象的属性,例如添加计数

在这个应用程序运行时查看CPU图,很明显,它一次只使用一个CPU核心的一部分(100%),因此我假设并行运行它将有助于缩短运行时间


我是并行编程新手,非常感谢您的帮助。

我建议您考虑使用线程而不是并行编程


我建议使用并行库,而不是自己管理线程(这可能是一项艰巨的任务)。查看.Net中的内容。CTP可以下载。

我建议您使用以下技术:构建等待处理的对象队列,并将它们从多个线程中排出:

创建一个XmlReader并开始逐节点读取文件,而不是EOF。 一旦遇到结束标记,可以将其内容序列化为对象。 将序列化对象放入队列中。
验证队列中的对象数,如果大于N,则从线程池中踢出一个新线程,当您说这些XML文件将被解析为单个对象模型时,该线程将退出队列。您的意思是它们将加载到内存中吗?如果是这样的话,您接下来将如何处理此对象模型?如果不在内存中执行某些操作/转换,然后将其保存到其他地方,则将其加载到内存中几乎没有用处。@darin解析后将有其他过程。但这与这个问题无关。