gpt4 book ai didi

linux - 什么时候使用系统调用 set_tid_address?

转载 作者:行者123 更新时间:2023-11-28 23:04:50 59 4
gpt4 key购买 nike

我一直在努力理解系统调用,并想了解 set_tid_address 是如何工作的。从我读到的内容来看,它基本上返回执行的程序或进程的 pid。

我已经用 ls 对此进行了测试,但是对于一些命令,例如 uptime、top 等,我没有看到正在使用 set_tid_address。这是为什么?

最佳答案

clone() 系统调用可以采用CLONE_CHILD_CLEARTID 标志,即 child_tidptr 的值(另一个 clone() argument) 被清除并且相关的 futex 信号在子线程退出时唤醒。这用于实现 pthread_join()(父线程在 futex 上等待)。

set_tid_address() 允许在初始线程上 pthread_join()。以下 LKML 线程中的更多信息:

[patch] threading fix, tid-2.5.47-A3
[patch] user-vm-unlock-2.5.31-A2

至于为什么有些程序调用 set_tid_address() 而其他程序不调用,答案很简单。链接(直接或间接)到 libpthread 的程序调用 set_tid_addressls 链接到 librt,后者链接到 libpthread,因此它运行 NPTL 的初始化。

关于linux - 什么时候使用系统调用 set_tid_address?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975098/

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