栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从任意pthread_t获取线程ID?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从任意pthread_t获取线程ID?

由于

pthread
s不需要使用Linux线程(就此而言,根本不需要内核线程)来实现,并且某些实现完全是用户级别的或混合的,因此
pthread
s接口不提供访问这些实现细节的功能。不可移植(甚至跨
pthread
Linux的各种实现)。使用那些线程库可以提供它作为扩展,但似乎没有任何作用。

除了访问线程库的内部数据结构(您不希望这样做,尽管假设您具有处理器亲缘关系和Linux线程ID,但您的代码无论如何都不能移植),您也许可以在创建时发挥作用,如果您控制创建线程的代码:

提供

pthread_create()
一个调用函数
gettid()
syscall
由于您不一定总是通过导出宏,因此您可能必须直接使用该宏
libc
),将结果存储在某个位置,然后调用原始的输入函数。如果你有相同的入口函数的多个线程,你可以传递一个递增的指针到一个数组
arg
参数
pthread_create
,然后将传递到您创建的存储线程ID的入口函数,存放
pthread_t
的返回值
pthread_create
在相同的顺序,然后您将能够根据给定的
pthread_t
值查找创建的所有线程的Linux线程ID

此技巧是否值得,取决于您所设置的CPU亲和力的重要性,而不是不访问线程库的内部结构,或者取决于提供的线程库

pthread_setaffinity_np



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/399072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号