2010-11-10 20 views
8

Tengo una pregunta rápida. Se supone que debo crear un pequeño programa multiproceso para capturar datos de múltiples sensores y tengo conocimiento tanto de pthreads como de qthreads. Tengo acceso a ambas bibliotecas. personalmente estoy predispuesto a utilizar Qt debido a su diseño y diversas funcionalidades. ¿Pero hay una ventaja significativa en el uso de uno frente al otro? GraciasQThreads Vs Pthreads

Respuesta

8

QThreads se basan en pthreads. Proporcionan una abstracción orientada a objetos, por lo que es más fácil trabajar con hilos. Además de que QThreads son portátiles, pueden ejecutarse en cualquier sistema que utilice el sistema de subprocesos subyacente, mientras que los pthreads son específicos de los sistemas POSIX.

La desventaja casi única de utilizar QThreads es que tendrá que vincular su aplicación con Qt; esta dependencia podría hacer que sea un poco más difícil distribuir su aplicación.

+0

Ya ... Solo lo estaba mirando y parece que así es como se hace internamente. Gracias Peoro. De hecho, estaba buscando específicamente si tryLock() se implementa utilizando pthread_mutex_trylock. Creo que es así. – blueskin

+2

el único problema de distribución es que debe incluir la licencia LGPL junto con su código cuando realiza un enlace dinámico a las bibliotecas de qt (suponiendo que esté utilizando la versión de fuente abierta y no comercial). En Windows, si no está seguro de qué DLLS necesitaría distribuir, use 'depends.exe' y ¡le dirá exactamente! http://www.dependencywalker.com/ – g19fanatic

2

Creo que en el corazón de las cosas, QThread en linux usa pthread. No estoy seguro de lo que está debajo del capó para el lado de Windows. A menos que haya algunas funciones específicas de API pthread que necesite que no estén disponibles con QThread, me quedaré con QThread solo para beneficiarme de la portabilidad que le brindará. No esperaría que haya una diferencia de rendimiento significativa. Qthread también le permitirá usar el mecanismo de señal/ranura a través de los límites del hilo.

4

Pero tienes que saber qué QThreads usa event loop para administrarlo, así que no puedes simplemente matar el hilo como con pthread. Si los hilos trabajan mucho y duro, no es posible detenerlo mientras no se libere. En algún caso, es importante.

Cuestiones relacionadas