嵌套pthread_created时获取父线程Id

时间:2013-12-24 13:02:33

标签: linux pthreads

在我的C代码实现中,我创建了嵌套的pthreads。

例如:

应用程序创建线程A,B和C.然后线程A创建A0,A1,A2;线程B创建B0,B1,线程C创建C0,C1,C2,C3。

现在我想知道是否有可能在执行线程C0时,其父线程Id是线程C的线程,或者在执行线程A2时,其父线程Id是线程A的线程?

如果是,那么可能的API是什么?

在旁注中,我不希望因某些遗留原因而将参数传递给线程。

1 个答案:

答案 0 :(得分:2)

没有“父线程ID ”这样的东西。

PThread规范没有描述线程之间的父< - >子关系。因此,没有PThread API调用从某个地方提取此信息。

pthread_self()返回的pthread-identifier可用于从一个进程的所有其他现有线程中分配一个现有线程。

请注意,pthread-identifiers可能会在流程的生命周期内被回收。

因此,假设有两个线程A和B,每个线程都有自己不同的pthread-id ID1和ID2。如果线程A结束并且在A结束B之后创建一个新线程C,那么很可能将ID1指定为其pthread-id。