【发布时间】:2023-03-26 21:25:01
【问题描述】:
关于 SO 的帖子表明 pthread_t 是一种不透明类型,而不是数字,当然也不是线程索引,因此您不应直接比较 pthread_t 等。
问题:
-
为什么?是否真的打算支持没有线程数字 ID 的系统?当
pthread_t实现很简单时typedef unsigned long int pthread_t;?
-
怎么样?上面一行之前有注释,所以其实是
/* Thread identifiers. The structure of the attribute type is not exposed on purpose. */ typedef unsigned long int pthread_t;pthreadtypes.h是什么意思?什么属性类型?这不是某个全局线程表的索引吗?
【问题讨论】:
-
这不依赖于底层操作系统 API 吗?操作系统内核之外的任何人都不想保留一个全局线程表——它是不可靠的。
-
@MartinJames:如果这就是 pthreads 的原因,请让您的评论成为答案......但是 - 我认为索引要么是操作系统的线程表,要么是库的当操作系统没有公开一个/有一个时的线程表。
-
在实际的实际实现中仅供参考,它实际上是一个指针,而不是整数/索引。有时,出于遗留兼容性的原因,所述指针被填充到像
unsigned long这样的整数类型中(假设为 ILP32 或 LP64 模型),但内容实际上是一个地址。
标签: c multithreading pthreads