¿Cuál es la diferencia entre NSThread y pthread? ¿NSThread usa pthread como su implementación interna y realmente necesitamos la sobrecarga adicional de NSThread cuando pthreads son suficientes especialmente en el iPhone?NSThread VS pthreads
Respuesta
No sé con certeza si NSThread
usa pthreads library internamente. Probablemente sí, pero como no tenemos el código fuente NSThread
, realmente no lo sabemos.
La diferencia es que pthread
es una biblioteca C y NSThread
es una biblioteca Objective-C. Pero ambos logran la misma funcionalidad.
La necesidad de una biblioteca deObjective-C es si hay que usarla en combinación con otras porciones de Objective-C API. I.E., no podrá tienda un pthread en un NSArray
.
Hasta donde yo sé, NSThread no usa p-hilos, a menos que Apple haya cambiado radicalmente las cosas. Las raíces de OOPC eran demasiado tempranas para el estándar POSIX (pthreads surgieron en 1c, que fue 1995, creo). Esta es una de las muchas críticas formuladas en los tiempos de ejecución actuales de Objective-C. Consulte http://www.jot.fm/issues/issue_2009_01/article4.pdf Sin embargo, puede acceder a los subprocesos en Objective-C a través de las bibliotecas C estándar. En realidad, habíamos hecho esta suposición en un proyecto y habíamos tenido problemas al interactuar con una biblioteca que creamos usando pthreads (esto era alrededor de ejecutar bucles con NSNotificationQueue
).
no lo sé, pero es totalmente plausible que NSThread utilizado originalmente algo distinto de pthreads (e .gramo. uso directo de la API de hilo Mach). Pero creo que es probable que hoy en día utilice pthreads. Evidencia: /System/Library/Frameworks/Foundation.framework/Foundation contiene la cadena "NSThread * _NSThreadGet0 (pthread_t)". ¿Parece una API no documentada para convertir un pthread a un NSThread? lo que implica que NSThread probablemente sea solo un contenedor pthread (que a su vez es solo un contenedor para hilos de Mach) –
Creo que usa pthread. Ver las pilas de llamadas que publiqué en la respuesta de @ Pablo. –
- 1. Pthreads vs. OpenMP
- 2. QThreads Vs Pthreads
- 3. NSThread vs. NSOperationQueue vs. ??? en el iPhone
- 4. Grand Central Dispatch vs NSThread
- 5. interacción NSThread y UIViewController
- 6. NSThread con _NSAutoreleaseNoPool error
- 7. Nice-Level para pthreads?
- 8. Enhebrar Box2D con pthreads
- 9. Falso compartir y pthreads
- 10. Pthreads en Visual C++
- 11. ¿Necesito -D_REENTRANT con -pthreads?
- 12. Paralelización: pthreads o OpenMP?
- 13. rastreando pthreads en linux?
- 14. Adquisición de recursos y pthreads
- 15. Manejo de señales en pthreads
- 16. Diferencia entre [NSThread detachNewThreadSelector:] y -performSelectorInBackground
- 17. Usando NSThread dormir en una NSOperation
- 18. ¿Cómo usar pthreads con Android NDK?
- 19. Señalización de una variable de condición (pthreads)
- 20. Realísticamente, ¿qué funcionalidad pthreads generalmente se usa?
- 21. ¿Necesitas unirte a un hilo cancelado? (pthreads)
- 22. ¿Por makecontext no funciona con pthreads
- 23. pthreads con prioridad de tiempo real
- 24. gcc diferencia entre -pthread y -pthreads?
- 25. Equivalente a SetThreadPriority en Linux (pthreads)
- 26. cómo detener un NSThread sub-hilo en iphone
- 27. ¿Tiene cada NSThread automáticamente una cola de despacho?
- 28. ¿Cómo pausar un NSThread hasta que se notifique?
- 29. ¿cuál es la diferencia entre sleep(), usleep() y [NSThread sleepForTimeInterval:]?
- 30. NSUrlConnection en NSThread - ¡No se ejecuta ningún delegado!
NSThread utiliza pthreads internamente AFAIK. Sin embargo, Pthreads podría proporcionar mecanismos más flexibles y potentes para la gestión y sincronización de subprocesos, como esperar hasta que termine otro subproceso, etc. – Andy
Estoy mirando algunas pilas de llamadas de un bloqueo y está lleno de pthreads. Eso no significaría NSThread utiliza pthread, pero esto está diciendo: ' Fundación \t __NSThread__start__ + 1024', ' 7 \t libsystem_pthread.dylib \t _pthread_body + 240', '8 \t libsystem_pthread.dylib \t _pthread_body + 282', '9 libsystem_pthread.dylib \t thread_start + 4' –