2016-08-23 93 views
0

32位应用程序是使用C++开发的,运行于具有4个或更多内核的多台机器上。我正在分析应用程序的核心/处理器消耗。我想问,32位应用程序可以使用多个Core?如果是的话,有什么方法可以检查吗?32位应用程序是否消耗多个内核/处理器

+1

32位应用程序不可能使用比64位应用程序更少或更多的内核。如果您不知道,请使用调试器,调试器的“线程”窗口是相关的。从技术上讲,你只能真正看到有多少内核被有效地用于[并发分析器](https://msdn.microsoft.com/en-us/library/dd537632.aspx),因为不能保证多个线程可以同时使用多个核心。线程有一个互相锁定的习惯以保持代码线程安全。任务管理器往往很简单。 –

+0

感谢汉斯。将尝试使用并发分析器。非常感谢。 – Vivek

+0

@HansPassant可以请您再确认一件事。我们对64位进程没有任何限制,对吧?这可以同时使用所有可用的CPU。 – Vivek

回答

2

32/64位是应用程序用于寻址其虚拟内存的位数。应用程序使用多少个核心完全独立于该数字。

通常,任何应用程序将使用尽可能多的可用内核,因为它具有活动线程(正如Hans Passant指出的那样,某些线程可能会阻塞等待其他线程,IO或类似内容,在这种情况下,它们将不会被调度对于任何内核)。

一个简单的检查就是在任务管理器中查看进程的CPU使用情况:如果进程使用的CPU数小于100%/number_of_cores,那么它实际上是单线程的。如果它利用更多,则意味着它运行在多个核心上。你的目标应该是通过正确使用多线程技术来使其可用CPU的100%(再次,这与32/64位问题无关)。

相关问题