¿Cómo puedo saber si el hilo actual se creó como un NSThread?

Recibo devoluciones de llamada de C ++ de una biblioteca de SDK de medios de transmisión comprada, que crea varios subprocesss internamente.

Específicamente, recibo devoluciones de llamada cuando la biblioteca desea registrar un post. A veces me llaman en el context de algunos NSThread, donde hay un grupo Autorelease, pero a veces me llaman desde otros subprocesss, que no tienen grupo de autorelease. Algunos de los hilos de llamada son hilos en time real (agarre de audio, etc.) por lo que el performance es importante.

¿Cómo puedo diferenciar entre las situaciones en las que soy llamado dentro de un subprocess NSThread (subprocess principal de la aplicación, u otras subprocesss NST) y subprocesss internos "solo en C ++" creados por la biblioteca SDK?

Nada en la documentation de Apple me dice qué sucede cuando uso

[NSThread currentThread]

cuando estoy en un context de otro tipo de subprocess, y lo que sucede cuando estoy llamando a pthreadSelf () o a una API similar, en un NSThread.

Además, me gustaría escuchar ideas acerca de adjuntar sets de autorelease a esos hilos internos, si es posible, y sobre drenarlos de vez en cuando.

Gracias.

NSThread es un wrapper en la parte superior de pthread, por lo que pthread_self siempre devolverá un object de hilo válido si el hilo se creó usando NSThread , pthread, GCD o la API de subprocesamiento de C ++.

[NSThread currentThread] también devolverá un object NSThread incluso si el hilo no se creó con la API NSThread y si se usa la API pública, es imposible saber si el object devuelto es solo un proxy o un NSThread "real".

Puede usar la directiva @autoreleasepool para generar un grupo de autorelease ligero.