gpt4 book ai didi

java - 来自 pthread_self() 的 Pthread id 与来自 d​​trace 脚本的数据不匹配

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:58:44 25 4
gpt4 key购买 nike

我正在使用来自 here 的这个 dtrace 脚本尝试查找 Java 程序的线程何时发生上下文切换。

我正在尝试将从脚本中收集的数据与从正在运行的程序中收集的跟踪数据(例如方法进入/退出之类的东西)相匹配。我使用一个简短的 JNI 方法获取正在运行的线程的 pthread id,该方法仅返回 pthread_self() 的值。

我遇到的问题是我通过调用 pthread_self() 获得的线程 ID 与我在 dtrace 脚本中获得的任何线程 ID 完全不同。我想知道这是否是因为我错误地调用了 pthread_self() 因为它返回一个指针,但是很难找到关于 pthread_t 在 mac osx 上实际是什么的信息。

最佳答案

所以我会回答我自己的问题,dtrace 中的 curthread 和 tid 变量是内核线程结构的指针值,为了获取这些值以将 dtrace 与用户空间线程数据进行比较,我必须创建一个内核扩展来获取用户空间中线程的这些内部值。

总的来说,这是一个坏主意,因为它不可移植,如果内核被更改很容易损坏,并且可能存在安全风险。不幸的是,我还没有找到另一种方法来实现我想要的。

关于java - 来自 pthread_self() 的 Pthread id 与来自 d​​trace 脚本的数据不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1332573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com