【发布时间】:2012-12-14 15:55:34
【问题描述】:
在 Solaris 上,processor_bind 用于设置线程的亲和性。你需要知道目标线程的LWPID或者使用常量P_MYID来引用自己。
我有一个看起来像这样的函数:
void set_affinity(pthread_t thr, int cpu_number)
{
id_t lwpid = what_do_I_call_here(thr);
processor_bind(P_LWPID, lwpid, cpu_number, NULL);
}
实际上,我的函数中有一堆跨平台的东西,为了清楚起见,我已经省略了。
关键是我想设置任意 pthread_t 的亲和力,所以我不能使用P_MYID。
如何使用processor_bind 或其他接口实现此目的?
【问题讨论】:
-
相当于
P_MYID;pthread_self()和P_MYID都不能在该代码中使用,因为它需要能够在任意目标线程上运行,而不仅仅是它自己。
标签: pthreads solaris setthreadaffinitymask