C++ 设置进程及其效果的处理器相关性

C++ 设置进程及其效果的处理器相关性,c++,process,C++,Process,我有一个应用程序,其中有一个用户界面模块和其他支持服务。这些其他服务存在内存泄漏和其他线程同步问题。因此,在一些机器中,尤其是四核、双核机器中,服务不时崩溃 我知道解决这个问题的最好方法是清除内存泄漏和同步问题 但作为一种解决方法,我们为其中两个服务设置了处理器亲和力,并观察到在此之后没有发生崩溃 现在我的问题是 当我限制我的服务只使用一个处理器时,它们的性能会受到影响吗 编辑1:注意:这些服务是多线程的。这当然取决于这些服务是否依赖线程。如果它们是单线程的,您不会注意到太多的差异 在您的情况下

我有一个应用程序,其中有一个用户界面模块和其他支持服务。这些其他服务存在内存泄漏和其他线程同步问题。因此,在一些机器中,尤其是四核、双核机器中,服务不时崩溃

我知道解决这个问题的最好方法是清除内存泄漏和同步问题

但作为一种解决方法,我们为其中两个服务设置了处理器亲和力,并观察到在此之后没有发生崩溃

现在我的问题是 当我限制我的服务只使用一个处理器时,它们的性能会受到影响吗


编辑1:注意:这些服务是多线程的。

这当然取决于这些服务是否依赖线程。如果它们是单线程的,您不会注意到太多的差异

在您的情况下,由于服务是多线程的,它们可能会或可能不会受到性能惩罚-这将取决于实际设计,特别是取决于它们是否依赖于并行执行的多个线程。

(可能更适合serverfault.com)

当服务创建多个线程时,最有可能的情况是

此外,它的响应时间可能会增加,即使系统没有负载。如果绑定到的CPU正忙于另一个线程,它必须等待该线程放弃其时间片。对于由(或a)线程处理的许多小请求,这一点可能会变得显著

感知到的结果可能是微妙的,也可能是毁灭性的:您可能会运行一段时间,但当请求达到峰值时就会崩溃,依赖的服务(如果有的话)可能会减慢速度