我在SUN/Solaris上运行CC编译器,操作系统为不同的内核分配了超过64个线程。我很想知道是否有方法在运行时获得不同线程的核心id?
我没有为这些线程设置相关性,而是使用psrset来创建处理器集。
我找到了答案:Solaris上的getcpuid()返回核心id(即使是超线程):我已经测试过了,效果很好。http://www.unix.com/man-page/all/3c/getcpuid/
我不知道是否有Solaris特定的系统调用,但您可以使用可移植的hwloc库及其hwloc_get_last_cpu_location
函数。