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 <!
Hoy en día, Xiaobian es un desarrollador de Linux para principiantes que explica cómo instal
volvió a cargar Win7, nunca he intentado instalar Linux de nuevo, ocasionalmente jugando, y no quier
Ayer recibí el correo electrónico de alarma de zabbix. La tasa de uso del directorio de un
ubuntu gedit un chino ilegible parece muy molesto, este artículo proporciona dos soluciones, el enfo
Manual técnico de administración de sistemas Linux - Capítulo 6 Agregar nuevos usuarios
Control de permisos adicionales de LINUX ACL
Accesos directos comunes de Linux
Explicación gráfica de la instalación de Linux
Contraseña de Linuxssh sesión gratis
11 comandos de terminal de Linux geniales Daquan
Montaje del sistema de archivos Linux
Cree un entorno Android en Ubuntu y descargue archivos APK de Google Play
¿Cómo resolver el problema de que Windows 7 viene con la actualización de actualización?
CF arsenal de élite abierto granada explosivo collar libre
Sistema Win7 LAN cómo agarrar la velocidad de la red
El navegador Google Chrome se bloquea en Win10 Preview 10525
El proceso cidaemon.exe ocupa el 100% de la solución de CPU
La función de protección del sistema Win8 está habilitada y deshabilitada la configuración
Win10 vista previa versión 11082 abrir PowerShell sin respuesta cómo hacerlo
Bloqueando los riesgos de seguridad de Win 2003 en todas las direcciones