在Mac OS X上进行线程处理,强制使用多个CPU

时间:2014-05-25 19:33:35

标签: c multithreading macos

我刚刚为我开发多年的大型应用程序添加了线程。它是用C语言编写的,可以在Mac和Linux上运行。这个问题是关于OS X,10.8.2或10.6.8。

问题:我看到程序打开两个线程,正如我所料。但是,显然两个线程都在同一个CPU上运行,或者至少,我从未获得超过100%的CPU分配给该程序。这几乎打败了拥有线程的整个目的。

如果重要的话,我会使用相当数量的互斥锁。

如何强制操作系统在100%不同的CPU上运行每个线程? (此机器上有8个CPU。)

2 个答案:

答案 0 :(得分:2)

互斥体在这里可能很重要。在将其设置为“记录所有线程状态”之后,打开仪器并在程序上运行时间分析器仪器。这将让您看到线程被阻塞的位置等待某些东西(可能是互斥锁)而不是运行。

答案 1 :(得分:0)

多个正在运行的线程将是并发的,只要它们在不同的核上执行 - 因为每个核心在每个类Unix操作系统中都有自己的调度程序实例。 处于单独的CPU芯片上很少:事实上,在同一芯片的不同内核上运行的线程之间共享资源会带来好处。