0

我有一个用 C++ 编写的现有应用程序,它目前执行许多任务,从数据库中为所有客户读取事务,处理它们并将结果写回。

我想要做的是让多个版本在不同的机器上并行运行以增加事务容量,方法是将特定的客户子集分配给每个版本的应用程序,这样就不需要争用或数据共享,因此不需要锁定或同步。

我想要做的是在同一台机器上运行多个版本,并且分布在其他机器上,所以如果我有一个四核机器,将有四个应用程序实例在运行,每个实例都使用一个 CPU。

我将把 c++ 代码包装在 .NET c# 接口中并管理所有这些进程——本地进程和从父 c# 管理服务分发的进程,该服务负责创建、启动和停止进程,以及它们之间的所有通信和管理。

我想知道的是,如果我在四核机器上的单独后台线程上分别创建四个实例,CLR 和 .NET 是否会自动负责将负载分散到每个机器上的四个 CPU 上,或者我是否需要做些什么来利用并行处理能力?

4

2 回答 2

1

您可以在通过对象启动进程时设置进程关联Process(或ProcessThread取决于您启动应用程序的方式)。

这是一个涵盖该主题的SO帖子(我没有投票关闭作为副本(还),因为我不能100%确定这是否正是您所追求的)。

于 2012-06-07T16:12:36.837 回答
1

如果您的意思是您将在同一个机器上的四个进程中运行您的应用程序,那么控制这些进程如何分配 CPU 时间的是操作系统 (Windows)。如果这些进程正在做类似的工作,那么通常它们将获得大致相等的处理器时间。

但是,您是否考虑过在单个进程中使用四个线程?线程比进程轻得多,因此您不需要单独的管理服务,即您将拥有一个进程(有四个线程)而不是 5 个进程。您是否有任何机会来自 unix 背景?

于 2012-06-07T16:16:26.670 回答