Al no tener experiencia con el enhebrado en el pasado, ¿qué técnica de enhebrado en C++ será la más fácil para un principiante? boost :: thread o pthreads?PThread vs boost :: thread?
Respuesta
Ir por impulso :: hilo. Es closely related para el trabajo en la próxima C++ standard threads, y la interfaz es bastante fácil de usar e idiomática para C++ (RAII en lugar de la administración manual de recursos).
boost :: thread es una abstracción muy agradable y portátil. Ciertamente lo usaría, pero también aprendería la API nativa de thread, como pthreads, para que sepas cómo funciona el threading en tu plataforma.
Yo diría que tienen la misma dificultad. La única gran diferencia que veo es que las PThreads son bastante compatibles (si le interesan los puertos cruzados). Otra es que ha habido bastantes buenos libros sobre PThreads, aunque casi todos los conceptos se trasladarán a boost :: thread, y muchas otras bibliotecas de threading.
pthreads solo están disponibles en plataformas * nix de forma predeterminada (hay un contenedor pthreads disponible para Windows en Sourceforge). Boost es multiplataforma y es compatible con * nix y Windows por igual. – jalf
Microsoft proporciona pthread encabezados y bibliotecas con sus Servicios para el paquete de Unix. Para Win2K/XP/2003 es una descarga: http://www.microsoft.com/downloads/details.aspx?FamilyID=896C9688-601B-44F1-81A4-02878FF11778 Para Vista/7/2008 es una característica: http://technet.microsoft.com/en-us/library/cc771672.aspx –
Boost.Thread usa el concepto RAII para el bloqueo, que hace que las cosas sean más seguras y ayuda a evitar errores como olvidar liberar un mutex.
Iré en la dirección opuesta a la de todos los demás: aprende (o al menos familiarízate con lo que está disponible en) pthreads.
Dado que el boost es principalmente solo una envoltura alrededor de pthreads (en plataformas posix), ayuda saber qué está pasando debajo. Al tratar de ser genérico, impulsar deja la funcionalidad específica de la plataforma sin envolver. Para llegar a él, necesita usar las llamadas native_handle(). Para usar las llamadas native_handle(), necesita saber qué ofrece la plataforma.
Piense en ello como enchufes. Hay docenas de clases de socket y frameworks. Pero finalmente envuelven la API de socket de la plataforma subyacente. Tu comprensión es siempre más rica si la conoces y si sabes de qué manera las abstracciones de tu clase pueden tener deficiencias.
¿A qué funcionalidad particular no se puede acceder a través de Boost? – jalf
@jalf pthread attributes - prioridades, etc. Puedes acceder a ellos a través de las llamadas a native_handle() de Thread, Mutex, etc., pero si no sabes un poco sobre pthreads, quizás nunca sepas que están ahí para comenzar . – Duck
Punto justo. Solo desearía que los hubieras mencionado en la publicación en sí. :) También diría que la mayoría de las aplicaciones no deberían tener que preocuparse por la prioridad del subproceso (o la prioridad del proceso, para el caso). Pero tiene razón, si se necesitan estos detalles, la familiaridad con la API subyacente es esencial. – jalf
- 1. Kill Thread in Pthread Library
- 2. Boost thread Leakage C++
- 3. Boost Thread Cancelando
- 4. Thread Pool vs Thread Spawning
- 5. Thread ID vs. Thread Handle
- 6. no compila si incluye boost/thread en Linux Ubuntu:) 10.10
- 7. C++ boost :: thread execute code on main thread?
- 8. boost interprocess mutex vs boost hilo mutex
- 9. Intel TBB vs Boost
- 10. Handler vs Thread
- 11. Thread vs ThreadPool
- 12. Pausar un boost :: thread por tiempo ilimitado
- 13. ¿Qué significa boost :: thread sleep() do?
- 14. tr1 :: hash para boost :: thread :: id?
- 15. forward declaration of boost :: thread variable
- 16. Cómo detener/interrumpir un boost :: thread?
- 17. boost :: tokenizer vs boost :: split
- 18. decaf threads vs boost threads vs omnithreads
- 19. ¿Cuáles son las diferencias más importantes en la biblioteca Boost Thread o Pthreads?
- 20. Boost: undefined referencia
- 21. Implementando Runnable vs. extended Thread
- 22. pthread (fallo de segmentación)
- 23. ACE vs Boost vs Poco vs wxWidgets
- 24. java.util.concurrent vs. Boost Threads library
- 25. regex: boost :: xpressive vs boost :: regex
- 26. boost :: lock_guard vs boost :: mutex :: scoped_lock
- 27. Boost Jam vs Jam
- 28. ¿Por qué hay una diferencia al usar std :: thread :: hardware_concurrency() y boost :: thread :: hardware_concurrency()?
- 29. pthread en una clase
- 30. C# Timer vs Thread en el servicio
Todavía no he utilizado, pero miré la documentación de ambos. Boost es más compatible, pero pthread es mucho más fácil de usar. –
Útil: http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/overview/networking/bsd_sockets.html –