我刚读过IEEE Std 1003.1™,2004 Edition(POSIX规范),以确定mac osx上的实际线程ID是什么。在POSIX SPEC的pthread_equal()的RATIONALE部分中说:
实现可以选择将线程ID定义为结构。这允许使用int的额外灵活性和健壮性。例如,线程ID可以包括允许检测已经检测到的线程ID的“悬空ID”副本的序列号。由于C语言不支持结构类型的比较,因此提供了pthread_equal()函数来比较线程ID。
在Mac OSX中,pthread_t被定义为指向名为'_opaque_pthread_t'的结构的指针,该结构有3个成员。 __sig是long类型,__ cleanup_stack是指向结构的指针,__opaque是char类型的数组。
我的第一个问题是:
为了找到我的问题的答案,我用Google搜索,然后我找到了this question:Mac/iPhone: Is there a way to get a thread identifier without using Objective-C?,但它提出了另一个问题。
另一个问题是:
答案 0 :(得分:3)
在OS X上,可以使用pthread.h中定义的pthread_threadid_np。注意_np后缀表明它是POSIX的扩展。