【发布时间】:2011-07-08 18:34:10
【问题描述】:
希望这是一个比我之前的问题更好的问题。我有一个 .exe,我将传递不同的参数(文件路径),然后它将接收并解析。所以我会有一个循环,循环遍历列表中的文件路径并将它们传递给这个 .exe 文件。
为了提高效率,我想将执行分散到多个核心上,我认为你可以通过线程来完成。
我的问题是,我应该使用线程池还是多线程来异步运行这个.exe?
另外,取决于你们认为哪一个是最好的,如果你能指出我想要做的一些信息的教程。谢谢!
编辑: 我需要将 .exe 的执行次数限制为每个核心执行一次。这是最有效的,因为如果我要解析 100,000 个文件,我不能只启动 100000 个进程。因此,我使用线程将一次执行次数限制为每个内核一次执行。如果有其他方法(除了线程)来确定处理器是否没有被执行,或者 .exe 是否已完成,请解释。 但如果没有其他方法,我的最后一个问题是如何使用线程调用 parse 方法,然后在该线程不再使用时回调?
第二次更新(非常重要):
我仔细阅读了每个人告诉我的内容,发现了一个我认为无关紧要但我忽略的关键元素。所以我使用的是 GUI,我不希望它被锁定。这就是我想使用线程的原因。我现在的主要问题是,如何从线程发回信息以便知道执行何时结束?
【问题讨论】:
-
指定您的操作系统、语言等
-
您对文件的处理是否非常密集?如果不是,那么您可能会受到 I/O 限制,在这种情况下,线程很可能会使事情变得更慢而不是更快。
标签: c# multithreading multicore