2011-05-25 135 views
1

我想在一个4核心处理器上运行多线程程序,并且我希望每个线程运行在不同的内核上。我该如何要求操作系统在另一个内核上运行每个线程? - Linux操作系统

我该怎么做?因为现在我看到他们都在同一个核心上运行。

(我使用的是Linux操作系统,我的代码是wrriten对角)

+0

操作系统应自动分配线程以获得最佳性能。如果不止一个线程正在做大量的工作,那么线程应该在所有可用的内核中进行调度,除非另有说明。你能确定线程在每个内核上的CPU占用率有多少? – khabraken 2011-05-25 15:30:42

+0

你确定你的程序实际上有多个线程吗?正如Specter所说,线程应该自动分配给不同的内核。 – Mokubai 2011-05-25 21:30:42

回答

4

进程调度使进程都具有affinity对特定的CPU。您已经将一堆东西加载到缓存中,您不妨继续使用这个“热门”缓存。

您可能正在获取同一内核上的所有线程,因为您已经在此处加载了该程序。

我的确发现了这个:pthread_setaffinity_np。这看起来很笨拙,但我希望它有一些用处。

+0

感谢您的答复! – hilli 2011-05-26 18:48:38

相关问题