多线程与多实例 - 选择哪个?

Ale*_*lov 9 .net c# multithreading

这两种情况之间是否会有很大差异:

  1. 一个应用程序实例创建100个线程来处理一些作业
  2. 同一个应用程序的10个实例分别创建10个线程来处理作业(共100个)

两种情况下的线程数都是相同的.是一种表现还是一种改进?

实例 - 例如控制台应用程序,因此在第二种情况下它将运行10个控制台应用程序.每个应用程序都有自己的文件夹.

Chr*_*ter 5

线程使用的资源少于进程,因此理论上选项1将"更好".但是,您可能不会注意到两者之间存在很大差异,因为100个单独的线程进程全部同时运行并为相同的O/S资源而战,这几乎可以保证您的系统停止运行.

我会选择选项3 - 一个包含相当小的线程池的进程.这样,一些工作将同时执行,其余工作将排队等待轮到他们.如果要运行大量工作,这种方法也可以很好地扩展.

请参阅ThreadPool类,或者最好是其上的许多更高级别的抽象之一(例如,任务库,甚至是普通的旧异步委托).