题
我推测这个 pthread_t
保持恒定-一个给线为其整个生命,但是我的实验似乎证明这个假设错误的。如果id对于给定的线不会保持恒定在其生命,我怎么可以储存 pthread_t
所以另外一个线程可以使用 pthread_join
来块,直到的线是做完了吗?
由于其他原因将是有益的,我知道如何获得一个独特的标识,为一线,我可以换回一个 pthread_t
.是有这样做的一种方法?
有很多伟大的信息,但我有一个困难时期固定下来的有用的答案,这些问题。 我感谢所有帮助/建议,我可以得到!
编辑:还有,我不知道为什么,但似乎一切都正常工作时增加的睡眠(1)和沉睡了1秒前的每一个新的螺纹(在线程的功能)。这可能是把握作为吸管,但是可以 pthread_t
值的变化暂时期间开始的一个新的螺纹吗?
解决方案
您不能依靠pthread_t
是唯一的,但你可以使用pthread_equal()
确定两个线程ID是否指的是同一个线程。
NAME
pthread_equal -- compare thread IDs
SYNOPSIS
#include <pthread.h>
int
pthread_equal(pthread_t t1, pthread_t t2);
DESCRIPTION
The pthread_equal() function compares the thread IDs t1 and t2.
RETURN VALUES
The pthread_equal() function will return non-zero if the thread IDs t1 and t2
correspond to the same thread. Otherwise, it will return zero.
其他提示
一个独特的和不断标识符测线?
以确保每个螺纹你开始可以唯一标识:
- 使用一个单调增加反
- 分配计数器
void*
在pthread_create
看到这个答复的更多详细信息: 如何分配的唯一标识到螺纹在一个pthread包装?
不隶属于 StackOverflow