什么是 mac osx 上 POSIX 的线程 ID
What is thread ID of POSIX on mac osx
我刚刚阅读了IEEE Std 1003.1,2004™版(POSIX规范(,以确保Mac osx上的实际线程ID是什么。在POSIX SPEC的pthread_equal((的基本原理部分中说:
实现可以选择将线程 ID 定义为结构。例如,线程 ID 可以包含一个序列号,允许检测已检测到的线程 ID 的"悬空 ID"副本。由于 C 语言不支持结构类型比较,因此提供了 pthread_equal(( 函数来比较线程 ID。
在 Mac OSX 中,pthread_t被定义为指向名为"_opaque_pthread_t"的结构的指针,该结构具有 3 个成员。 __sig类型长,__cleanup_stack是指向结构的指针,__opaque是 char 类型的数组。
我的第一个问题是:
- pthread_t用于标识线程。 它是指向 OSX 中键入"_opaque_pthread_t"的指针。那么,说 _opaque_pthread_t 类型的地址代表线程 ID 是否正确?
- 它的成员叫什么__sig、__cleanup_stack和__opaque?我认为作为应用程序开发人员是什么并不重要吗?
为了找到我问题的答案,我用谷歌搜索,然后我找到了这个问题:Mac/iPhone:有没有办法在不使用Objective-C的情况下获得线程标识符? 但它提出了另一个问题。
另一个问题是:
- mach_port_t不是线程 ID。它是一个无符号整数类型,表示 GNU Mach 中的端口名。它们的含义不同。但是当我想只获得线程的唯一标识符时。mach_port_t和pthread_t是否随时可以交换?
在 OS X 上可以使用 pthread.h 中定义的 pthread_threadid_np。请注意,_np后缀表明它是 POSIX 的扩展。
相关文章:
- 我应该在C++中打印线程 ID 吗?
- 我可以使用Qt线程ID为每个线程创建唯一的缓存吗?
- 这种基于线程 ID 的同步是否安全整洁?
- OpenMP:当我按线程 ID 访问共享变量时,我是否需要一个关键部分
- C 不同的线程在FreeBSD 10上具有相同的线程ID
- 如何获取正确的线程 ID 和值
- 调试器看到的输出线程 ID
- 是否可以向特定的线程 ID 发送信号?
- C++ 中 OpenMP 中的有序线程 ID
- 您可以在 OpenMP 中将特定线程 ID 分组到唯一的任务组中吗?
- 查找称为函数C 的线程ID
- 确定进程的输入线程 ID
- SetWindowShookex(WH_KEYBOARD)无法与线程ID一起使用
- 在性能方面获取线程 ID 是否昂贵
- 标准::线程::id的要求.可以雾化吗?
- 如何知道谁是给定线程 ID 的父线程
- 当OwningThread表示线程ID时,它为什么是HANDLE类型的CRITICAL_SECTION的成员
- 不确定我在提升日志中的线程 ID 是否正确
- 线程ID不存在的OpenThread
- 如果父线程 ID 没有作为pthread_create上的参数传入,是否可以从 C/C++ 中的线程中获取父线程 ID?