multihilo Linux para lograr la clase de

  

Para las tareas de cálculo intensivo, si se utiliza el procesamiento multi-hilo razonable, puede mejorar en gran medida la eficiencia computacional. Este blog es lograr una clasificación multi-hilo, y explicar algunas de las cuestiones que requieren atención.

En primer lugar, hablar de ideas generales: el elemento se divide en n segmentos, utilizando ordenar rápida múltiples hilos en paralelo. Después de que el último hilo tendrá que esperar a que estos segmentos ordenados, ordenamiento por mezcla de un proceso similar.

La complejidad del tiempo de hacerlo es (suponiendo que era la máquina de 4 núcleos) O (n + n /4log (n /4)), que O (nlogn) probablemente se verá dos veces más rápido.
(Por favor traiga cálculo numérico específico)

En primer lugar para introducir pthread_barrier familia de funciones.

 prototipo de la función: #include int pthread_barrier_init (pthread_barrier_t * restringir la barrera, pthread_barrierattr_t const * restringir attr, recuento sin firmar); pthread_barrier_wait int (* pthread_barrier_t barrera); int pthread_barrier_destroy (* pthread_barrier_t barrera); 

Descripción del parámetro :

pthread_barrier_t, es un recuento de la cerradura, las operaciones de bloqueo están contenidas dentro de las tres funciones, no nos importa no pueden operar directamente. Sólo necesita crear una instancia de un objeto tiró bien.

pthread_barrierattr_t, la propiedad está en posición de bloqueo, por lo que la función se establece en NULL para usar la propiedad predeterminada.

recuento, usted tiene que esperar un número especificado.

explicación popular:
pthread_barrier_ * en realidad sólo y sólo puede hacer una cosa, es actuar como pasamanos (barandillas medios de barrera). La imagen de que es tener múltiples hilos llegan a la misma posición frente a la barandilla, hasta que todos los hilos en la asistencia, a continuación, elimina las rejas al mismo tiempo de liberación. 1) La función init es responsable de especificar el número de hilos que esperar; 2) wait () función es llamada por cada iniciativa hilo, que le dice a los pasamanos y " fui a la línea de salida antes de que el y ". esperar ejecución () antes del final de los controles de barandilla si toda la barandilla, y si es así, barandillas desaparecido todas las discusiones continúan para ejecutar en un código, si no, entonces todos tienen que esperar hilo () que se detuvo en la función no se mueve, el resto no realizó esperar hilo () para continuar con la ejecución; 3) destruir la función libera aplicación init recursos.

roscado Ordenar:

 #include #include #include #include #include #include #include #include #include #include using namespace std; //función de comprobación de error ERR_EXIT línea nula (const string &msg, int retnum) {if (retnum = 0) {cerr <! 


Copyright © Conocimiento de Windows All Rights Reserved