我正在设计一个应用程序,它将包含一个“管理器”可执行文件和一个由前者启动和管理的“守护程序”可执行文件的1到n个实例。我想充分利用CPU核心的数量。
我的问题是:可以(并且应该)使用TPL控制此行为,即使每个守护程序可执行文件本身不使用多个线程?或者是MS Windows自动控制的东西,即Windows是否自动负载平衡多核之间启动的进程?
答案 0 :(得分:0)
我确信Windows会处理这个问题。一个进程将在一个核心上执行。应用程序使用哪个核心,将由OS决定。如果你启动一个新线程,os将决定该线程运行的核心。您应该只管理您的流程并让Windows完成其工作。
我们为许可证支付了很多钱的方式:)
答案 1 :(得分:0)
Windows将在可用的CPU资源(包括多个核心)上安排多个守护程序进程。
即使每个进程可能是单线程的,您仍然可以通过在多核计算机上运行多个进程来实现并行处理。
请注意,每个守护程序进程可能不会严格安排到单独的核心。完全可能的是,如果所有守护程序进程不是很繁忙,它们将在同一核心上的不同时间进行调度。它们也可能会从一个核心移动到另一个核心,同时运行" (虽然这需要一些费用)。 Windows Scheduler的目的是优化可用CPU资源的使用。
有关Windows计划程序如何运作的详细信息,建议您查看the MSDN documentation。