gpt4 book ai didi

c++ - 什么是 mac osx 上 POSIX 的线程 ID

转载 作者:太空狗 更新时间:2023-10-29 21:23:02 27 4
gpt4 key购买 nike

我刚刚阅读了 IEEE Std 1003.1™, 2004 版(POSIX 规范)以确保什么是 mac osx 上的实际线程 ID。在 POSIX 规范的 pthread_equal() 的 RATIONALE 部分说:

Implementation may choose to define a thread ID as a structure. This allows additional flexibility and robustness over using an int. for example a thread ID could include a sequence number that allows detection of "dangling IDs" copies of a thread ID that has been detected). Since the C language does not support comparison on structure typs the pthread_equal() function is provided to compare thread IDs.

在 Mac OSX 中,pthread_t 被定义为指向名为“_opaque_pthread_t”的结构的指针,该结构具有 3 个成员。 __sig 是 long 类型,__cleanup_stack 是指向结构的指针,__opaque 是 char 类型数组。

我的第一个问题是:

  1. pthread_t 用于标识一个线程。它是一个指向 osx 中类型 '_opaque_pthread_t' 的指针。那么,说 _opaque_pthread_t 类型的地址表示线程 ID 是否正确?
  2. 其名为 __sig、__cleanup_stack 和 __opaque 的成员是什么?我认为作为应用程序开发人员是什么并不重要,可以吗?

为了找到我的问题的答案,我用谷歌搜索,然后找到了 this question:Mac/iPhone: Is there a way to get a thread identifier without using Objective-C?但它提出了另一个问题。

另一个问题是:

  1. mach_port_t 不是线程 ID。它是一个无符号整数类型,代表 GNU Mach 中的端口名称。它们的含义不同。但是当我只想获得线程的唯一标识符时。 mach_port_t 和 pthread_t 是否始终可以交换?

最佳答案

在 OS X 上,可以使用 pthread.h 中定义的 pthread_threadid_np。请注意 _np 后缀表明它是 POSIX 的扩展。

关于c++ - 什么是 mac osx 上 POSIX 的线程 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19247228/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com