¿Cuáles son los beneficios de los programas multiproceso?
Mejor utilización de recursos
Imagínese una aplicación que necesita leer y procesar archivos del sistema de archivos local. Por ejemplo, se necesitan 5 segundos para leer un archivo del disco y 2 segundos para procesar un archivo. Procesar dos archivos requiere:
5 segundos para leer el archivo A
2 segundos para procesar el archivo A
5 segundos para leer el archivo B
2 segundos para procesar el archivo B
---------------------
Total ***14 segundos p>
Al leer un archivo del disco, la mayor parte del tiempo de la CPU se dedica a esperar a que el disco lea los datos. Durante este tiempo, la CPU está muy inactiva. Puede hacer otra cosa. Al cambiar el orden de las operaciones, se pueden utilizar mejor los recursos de la CPU. Observe la siguiente secuencia:
5 segundos para leer el archivo A
5 segundos para leer el archivo B, 2 segundos para procesar el archivo A
2 segundos para procesar archivo B p>
---------------------
Total *** tarda 12 segundos
La CPU espera hasta que se haya leído el primer archivo A. Luego comience a leer el segundo archivo. Mientras se lee el segundo archivo, la CPU procesará el primer archivo. Recuerde, la CPU está inactiva la mayor parte del tiempo mientras espera que el disco lea el archivo.
En general, la CPU puede hacer otras cosas mientras espera IO. Esto no es necesariamente IO de disco. También puede ser IO de red o entrada del usuario. Normalmente, las E/S de red y disco son mucho más lentas que las E/S de CPU y memoria.
La programación es más sencilla
En una aplicación de un solo subproceso, si desea escribir un programa para manejar manualmente el orden de lectura y procesamiento mencionado anteriormente, debe registrar la lectura y el procesamiento de cada archivo. estado de procesamiento. En su lugar, puede iniciar dos subprocesos, cada uno de los cuales maneja la lectura y operación de un archivo. El hilo se bloqueará mientras espera que el disco lea el archivo. Mientras esperan, otros subprocesos pueden usar la CPU para procesar archivos que se han leído. El resultado es que el disco siempre está ocupado leyendo diferentes archivos en la memoria. Esto traerá mejoras en la utilización del disco y de la CPU. Y cada hilo solo necesita registrar un archivo, por lo que este método también es fácil de implementar en programación.
Los programas tienen más capacidad de respuesta
Otro propósito común de convertir una aplicación de un solo subproceso en una aplicación de múltiples subprocesos es lograr una aplicación con mayor capacidad de respuesta. Considere una aplicación de servidor que escucha en un determinado puerto las solicitudes entrantes. Cuando llega una solicitud, la maneja y luego vuelve a escuchar.
El proceso del servidor es el siguiente:
mientras (el servidor está activo){
escucha la solicitud
procesa la solicitud
}
Si una solicitud tarda mucho en procesarse, los nuevos clientes no podrán enviar solicitudes al servidor durante este tiempo. Las solicitudes sólo se pueden recibir cuando el servidor está escuchando. Otro diseño es que el
hilo de escucha pasa la solicitud al hilo de trabajo (worker
thread) y luego regresa inmediatamente para escuchar. El hilo de trabajo puede manejar la solicitud y enviar una respuesta al cliente. Este diseño es el siguiente:
mientras (el servidor está activo){
escuchar la solicitud
entregar la solicitud al hilo de trabajo
}
De esta forma, el hilo del servidor vuelve rápidamente a escuchar. Por lo tanto, más clientes pueden enviar solicitudes al servidor. El servicio también se ha vuelto más receptivo.
Lo mismo ocurre con las aplicaciones de escritorio. Si hace clic en un botón para iniciar una tarea que requiere mucho tiempo y el hilo tiene que realizar la tarea y actualizar la ventana y el botón, parecerá que la aplicación no responde mientras se ejecuta la tarea. En cambio, las tareas se pueden pasar a subprocesos de trabajo (palabra
thread). Mientras el hilo de trabajo está ocupado procesando tareas, el hilo de ventana es libre de responder a las solicitudes de otros usuarios. Cuando el subproceso de trabajo completa su tarea, envía una señal al subproceso de ventana. El hilo de ventana
puede actualizar la ventana de la aplicación y mostrar los resultados de la tarea. Para el usuario, un programa con un diseño de subproceso de trabajo parece responder mejor.
Hay 30 módulos en una página de inicio y 30 módulos leen datos de la base de datos respectivamente.
Si esta página no utiliza subprocesos múltiples, verá una página en blanco después de 10 segundos cuando la abres, todos los módulos son visibles en un instante
Con subprocesos múltiples, la página se abre en el primer segundo cuando se abre la página. En este momento, solo hay 3 módulos en la página. y luego se muestran todos cada 1 segundo.
Buena experiencia de usuario