【问题标题】:Is it possible to get parent threadID from child? [closed]是否可以从孩子那里获取父线程ID? [关闭]
【发布时间】:2014-11-18 22:29:32
【问题描述】:

我正在尝试将检测添加到我的代码中,以打印出类似的内容

'线程 1 分叉线程 2'

关于如何实现这一点的任何建议?

【问题讨论】:

  • 它是否显示出足够的研究努力是值得怀疑的,但很清楚所问和回答的问题。
  • 你是在 LLVM IR 中做的吗?
  • 给出你想打印的部分代码?
  • 我想生成程序执行的完整跟踪。我在我编写的 opt 阶段截获了对 pthread_create 的调用。基本上,我只是通过所有说明和仪器锁定/解锁、加载/存储等

标签: c pthreads llvm


【解决方案1】:

术语更正:一个线程可能创建另一个线程,而不是fork,这通常是 用于提及一个进程分叉另一个进程。

不,一个线程无法获取另一个线程的标识符。在 Linux 上,您可以检查 gettid() == getpid() 是否是主线程。 Solaris 有thr_main() 来识别调用者是否是主线程。 FreeBSD 有 pthread_main_np() 用于相同目的。

但是没有办法识别任何线程之间的父子关系。任何线程都可以创建更多线程。您必须在创建线程时使用传递线程标识符或使用全局数据结构来维护此信息。

【讨论】:

  • 感谢@BlueMoon 的澄清
猜你喜欢
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
相关资源
最近更新 更多