Objective-C의 NSThread를 사용하지 않고 현재 실행중인 스레드의 모든 종류의 스레드 식별자를 얻을 수있는 방법이 있습니까?Mac/iPhone : Objective-C를 사용하지 않고 스레드 식별자를 얻을 수있는 방법이 있습니까?
여러 스레드를 올바르게 처리하기 위해 사용자 정의 디버그 추적 시스템을 개선하고 있습니다. 추적 출력의 각 행마다 스레드 ID 또는 스레드 이름을 인쇄하고 싶습니다. 스레드는 다양한 방법으로 인스턴스화됩니다 (예 : NSOperationQueue와 pthread 함수가 모두 사용됩니다.
저는 현재 다음과 같은 두 가지 대안을 가지고 있습니다. 그러나 나는 그 중 하나에 만족하지 않습니다. 다른 옵션이 있습니까?
pthread_t
가 pthread_t 옵션은 _opaque_pthread_h
특정 플랫폼의 형식 정의 될 것으로 보인다. hack-y이고 이식성이 아니더라도 _opaque_pthread_h
필드를 사용하는 것이 좋습니다. 그것은 유형의 길이가 __sig
필드를 가지고 있지만 내 프로세스의 모든 스레드에 대해 동일한 값을 갖고있는 것 같습니다.
NSThread 옵션
[NSThread name]
장소에있을 NSAutoreleasePool
이 필요하지만, 나는 우리의 대부분의 코드는 순수 C++에서와 같이 그냥 C를 시작하는 것이 좋을 것이다 그래서이 요구되고 싶지 않아 ++ autorelease 풀 랩핑 기능이 없습니다.
잘 작동합니다. 고맙습니다. – JOM
아, 이것은 이전에 사용했던 방법보다 훨씬 낫습니다 - 스레드의 NSDictionary에서 값을 설정하고 검색합니다. 감사! (OSX 10.4 지원) – Marc
'pthread_mach_thread_np'는'pthread_self'와 같은 한계를 겪지 않습니까? 즉,'thread_id' 재사용은 더 자주 기대/요구됩니까? – jww