Red de conocimiento informático - Material del sitio web - ¿Los subprocesos múltiples necesariamente tienen una mayor concurrencia que los subprocesos únicos? ¿Por qué?

¿Los subprocesos múltiples necesariamente tienen una mayor concurrencia que los subprocesos únicos? ¿Por qué?

Un solo subproceso significa que cuando se ejecuta el programa, las rutas del programa (cosas procesadas) se ejecutan en orden consecutivo. Las anteriores deben procesarse antes de ejecutar la pintura posterior.

Multi-threading, por ejemplo, significa que el programa puede realizar dos o más operaciones similares al mismo tiempo, como algunos agentes de búsqueda o software multi-thread para correo electrónico masivo ya que una operación requiere la devolución. La información de la red lleva mucho tiempo, pero la CPU está inactiva. Si se ejecuta una por una, llevará mucho tiempo buscar miles de IP. Si utiliza subprocesos múltiples, puede agregar otras búsquedas durante el período de espera y luego esperar, lo que puede mejorar la eficiencia. Sin embargo, los problemas que deben considerarse cuando múltiples subprocesos y múltiples procesos comparten algunos recursos parecen ser los mismos al acceder y modificar algunos recursos públicos o variables públicas, se les debe prestar especial atención. y se requieren algunas cerraduras. Hay cuestiones de orden a considerar.

El propósito de la programación multiproceso es "maximizar el uso de los recursos de la CPU". Cuando el procesamiento de un determinado subproceso no necesita ocupar la CPU, solo se ocupa de E/S, OEMBIOS y otros. recursos, la necesidad de ocupar la CPU Otros subprocesos del recurso tienen la oportunidad de obtener recursos de la CPU. Cada programa generará un proceso cuando se ejecute, y cada proceso debe tener al menos un hilo principal. Este hilo es en realidad una pista para la ejecución del proceso. Además del hilo principal, también puede agregar otros hilos al proceso, es decir, agregar otras pistas de ejecución. Hasta cierto punto, se puede considerar que agrega más. hilos a una función de tarea. Una vez que el programa se está ejecutando, puede suspender o ejecutar estos subprocesos de acuerdo con diversas condiciones, especialmente en un entorno de múltiples CPU, estos subprocesos se ejecutan al mismo tiempo. Multithreading significa tener múltiples threads dentro de un proceso. Esto permite que una aplicación tenga capacidades multitarea. La tecnología multiproceso también puede lograr esto, pero el alto costo de crear un proceso (cada proceso tiene datos y espacio de código independientes), la inconveniencia de la comunicación entre procesos (mecanismo de mensajes) y el tiempo de cambio de proceso es demasiado largo, lo que conducir a Con la propuesta de subprocesos múltiples, para una sola CPU (sin el hiperproceso activado), solo se puede ejecutar un subproceso al mismo tiempo, por lo que si desea lograr múltiples tareas, solo puede obtener una vez segmento para cada proceso o subproceso Dentro de un segmento de tiempo, solo se puede ejecutar un subproceso y luego se ejecutan otros subprocesos de acuerdo con una determinada estrategia. Dado que el intervalo de tiempo es muy corto, esto le da al usuario la impresión de que se están ejecutando muchos subprocesos al mismo tiempo. Sin embargo, el cambio de subproceso tiene un costo, por lo que si se utilizan varios procesos, es necesario cambiar la memoria requerida por el proceso al que pertenece el subproceso, lo que cuesta mucho tiempo. El costo del cambio de subprocesos es muy pequeño y los subprocesos pueden compartir memoria por completo. Por lo tanto, usar subprocesos múltiples cuesta mucho menos en conmutación que usar múltiples procesos. Sin embargo, el cambio de subprocesos todavía lleva tiempo, por lo que el tiempo que lleva ejecutar un proceso con dos subprocesos es mayor que el tiempo que lleva ejecutar un proceso con un subproceso dos veces. Es decir, el uso de subprocesos múltiples no aumentará la velocidad de ejecución del programa, pero reducirá la velocidad, pero para los usuarios, puede reducir el tiempo de respuesta del usuario. Los resultados anteriores son solo para una única CPU. Si se utiliza la tecnología Hyper-Threading para varias CPU o CPU, el uso de la tecnología Multi-Threading aún mejorará la velocidad de ejecución del programa. Debido a que un solo subproceso solo se asignará a una CPU y los subprocesos múltiples se asignarán a múltiples CPU, la tecnología Hyper-Threading es esencialmente hardware de subprocesos múltiples, por lo que también acelerará la ejecución del programa.