使用多个核需要pthread_setaffinity_np吗?

时间:2013-12-06 22:51:48

标签: android linux multithreading c++11 pthreads

我在运行Android 4.1.2和Linux 3.0.8内核的双核ARM7上运行多线程C ++应用程序(freesoft.org的tablebase生成器'hoffman')。使用linuxonandroid在Ubuntu 12.04上使用gcc 4.6.3进行编译。

我一直在尝试使用pthread_setaffinity_np()强制不同的线程进入不同的核心。我不想这样做,但似乎我必须这样做。

在一个小时的过程中,玩了不同的组合,我测量了双线程基准的以下运行时间:

使用pthread_setaffinity_np():10.818,10.803,10.814,11.077,11.013,10.952秒

没有pthread_setaffinity_np():20.366,19.263,19.539,16.764,19.365,19.661,19.330秒

似乎非标准GNU pthread_setaffinity_np()绝对需要让我的C ++ 11程序实际将其线程放到不同的核心上。 “顶部”确认我的两个核心中的一个正处于空闲状态。

这是对的吗?任何人都可以提供更好的解决方案吗?

0 个答案:

没有答案