时间:2011-10-14 15:51:17

标签: c++ multithreading compiler-construction

我写了一个单片设计的程序,它对处理器的需求非常粗略。因为我有一个双核,我认为一个CPU应该总是100%。但是我的CPU都是100%的。现在我猜我的编译器以某种方式将我的整体应用程序转换为线程化的应用程序。这些优化功能的限制是什么?什么时候仍然需要明确地做出一些线程?

我在Ubuntu linux 64-Bit上使用gcc

2 个答案:

答案 0 :(得分:1)

它没有,至少没有使用Cilk这样的东西。您必须无意中使用多个线程(或进程)而不会意识到它。也许您正在使用第三方库,在您的流程中创建额外的一两个线程?

<强> [编辑]

根据评论,使用像top(1)这样的程序来验证实际上你的程序的进程是否同时使用两个CPU。在您的情况下,XORG进程跳到100%,因为您的程序正在产生大量输出。

答案 1 :(得分:1)

对操作系统或其他库(例如CRT)的任何调用也可以使用其他线程。如果控制台运行它自己的线程,我很难感到惊讶,如果你做了很多任何类型的IO,那么可能会导致其他CPU最大化。