我只是将线程添加到我多年来一直在开发的大型应用程序中。它用C语言编写,可在Mac和Linux上运行。这个问题是关于OS X,10.8.2或10.6.8。在Mac OS X上执行线程,强制执行多个CPU
问题:我看到程序按照我的预期打开两个线程。然而,显然两个线程都运行在同一个CPU上,或者至少,我从来没有得到超过100%的CPU分配给该程序。这几乎破坏了线程的全部目的。
我使用了相当数量的互斥锁,如果这很重要的话。
如何强制操作系统在不同CPU的100%运行每个线程? (此机器上有8个CPU。)
也许你的线程根本不会做任何会导致大负载的东西?也许你正在睡觉或等待其他事件过多(使用过多的互斥体可能意味着线程化设计不是最好的)? –
你的目标有缺陷。 –
Joachim Pileborg:谢谢你的回答。这两个线程都做了很多工作。没有睡觉。我的感觉是,等待互斥的时间百分比非常小。 – rfermat