我推测这个 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包装?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top