有人告诉我,我可以获得与其他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函数,是否可能?谢谢你的帮助。
答案 0 :(得分:1)
没有这样的索引。
你所拥有的只是pthread_t
返回的pthread_self()
,它甚至不一定是整数类型,如果是,它肯定不必在任何地方分配特别的顺序。
如果你想要一个从零开始的整数索引,你需要自己分配它。但它不必是线程函数的参数 - 你可以有一个受互斥锁保护的全局计数器,每个线程可以为该计数器分配一个ID并递增它。