有没有一种方法可以获取当前正在运行的线程的任何类型的线程标识符,而无需借助 Objective-C 的 NSThread。
我正在改进我们的自定义调试跟踪系统以正确处理多个线程。对于跟踪输出的每一行,我想打印线程 ID 或线程名称。线程可以通过多种方式实例化,例如NSOperationQueue 和 pthread 函数都被使用。
我目前有以下两种选择,但我对其中任何一个都不满意。还有其他选择吗?
pthread_t 选项
pthread_t
似乎是特定于平台的 typedef_opaque_pthread_h
。使用以下字段就可以了_opaque_pthread_h
就目前而言,即使它是 hack-y 并且不可移植。它有一个__sig
long 类型的字段,但对于我进程的所有线程来说,它似乎具有相同的值。
NSThread 选项
[NSThread name]
需要NSAutoreleasePool
到位,但我不希望这是一个要求,因为我们的大多数代码都是纯 C++,所以最好只启动 C++ 函数而不进行自动释放池包装。
我找到了一种足以获取跟踪输出的某种唯一标识符的方法。
pthread_mach_thread_np
可用于获取线程标识符,iPhone 上为 unsigned int。
mach_port_t tid = pthread_mach_thread_np(pthread_self());
显然,这与 NSLog 输出中使用的线程 ID 相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)