Есть ли способ получить любой идентификатор потока текущего запущенного потока, не прибегая к NSThread Objective-C.
Я улучшаю нашу пользовательскую систему трассировки отладки, чтобы правильно обрабатывать несколько потоков. Для каждой строки вывода трассировки я хотел бы напечатать идентификатор потока или имя потока. Потоки создаются различными способами, например, используются функции NSOperationQueue и pthread.
В настоящее время у меня есть следующие две альтернативы, но я не удовлетворен ни одной из них. Есть ли другие варианты?
опция pthread_t
pthread_t
кажется typedef для конкретной платформы _opaque_pthread_h
. Сейчас было бы хорошо использовать поля _opaque_pthread_h
, даже если он хакерский и не переносимый. У него есть поле __sig
типа long, но, похоже, это значение одинаково для всех потоков моего процесса.
NSThread option
[NSThread name]
требует наличия NSAutoreleasePool
, но я не хочу, чтобы это было обязательным требованием, так как большая часть нашего кода - чистый C ++, поэтому было бы неплохо просто запустить функцию c ++ без переноса пула авто-выпуска ,