C++ mac osx上POSIX的线程ID是多少
我刚刚读了IEEE标准1003.1™, 2004版(POSIX规范),以确保mac osx上的实际线程ID。POSIX规范pthread_equal()的基本原理部分中说: 实现可以选择将线程ID定义为结构。这允许在使用int时具有额外的灵活性和健壮性。例如,线程ID可以包括一个序列号,该序列号允许检测已检测到的线程ID的“悬挂ID”副本)。由于C语言不支持对结构类型进行比较,因此提供了pthread_equal()函数来比较线程ID 在Mac OSX中,pthread_t被定义为指向名为“_opaque_pthread_t”的结构的指针,该结构有3个成员__sig是long类型,_cleanup_stack是指向结构的指针,_不透明是char类型的数组 我的第一个问题是:C++ mac osx上POSIX的线程ID是多少,c++,macos,C++,Macos,我刚刚读了IEEE标准1003.1™, 2004版(POSIX规范),以确保mac osx上的实际线程ID。POSIX规范pthread_equal()的基本原理部分中说: 实现可以选择将线程ID定义为结构。这允许在使用int时具有额外的灵活性和健壮性。例如,线程ID可以包括一个序列号,该序列号允许检测已检测到的线程ID的“悬挂ID”副本)。由于C语言不支持对结构类型进行比较,因此提供了pthread_equal()函数来比较线程ID 在Mac OSX中,pthread_t被定义为指向名为“_o
在OS X上,可以使用pthread.h中定义的pthread_threadid_np。注意_np后缀表示它是POSIX的扩展。您能详细说明一下需要线程ID的目的吗?为什么不继续使用
pthread\u t
?我想获取一个用于日志记录的线程ID。因此,最后,它将作为算术类型传递给printf(或其他什么东西)。对于人类可读的日志来说,它并不理想——理想情况下,您更喜欢1中的线程ID。但是获得这些的唯一方法是以编程方式跟踪线程的创建,这几乎不值得付出努力。我同意你的看法。在这种情况下,我将坚持使用pthread\u t
和pthread\u threadid\u np
。非常感谢。我尝试过使用pthread_threadid_np,并选中了_np后缀表示POSIX线程的不可移植扩展,谢谢!!