获取pthread的索引而不将其作为函数的参数传递。

时间:2016-11-19 01:45:22

标签: c unix parallel-processing pthreads

有人告诉我,我可以获得与其他pthreads相关的pthread索引(0,1,2等)。

然而同时使用

pthread_t id = pthread_self();
uint64_t tid;

pthread_threadid_np(NULL, &tid);

给出以下内容。 (例如4 pthreads。)

2134955
2134954
2134956
2134957

232833024
232296448
233369600
233906176

我想在这种情况下得到pthread(0,1,2,3)的索引。如果不将它作为参数发送到pthread函数,是否可能?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

没有这样的索引。

你所拥有的只是pthread_t返回的pthread_self(),它甚至不一定是整数类型,如果是,它肯定不必在任何地方分配特别的顺序。

如果你想要一个从零开始的整数索引,你需要自己分配它。但它不必是线程函数的参数 - 你可以有一个受互斥锁保护的全局计数器,每个线程可以为该计数器分配一个ID并递增它。