¿Qué está pasando con la programación multiproceso?
Cada programa que se ejecuta en el sistema es un proceso. Cada proceso contiene uno o más hilos. Un proceso también puede ser la ejecución dinámica de un programa completo o parte de un programa. Un hilo es una colección de instrucciones, o un segmento especial de un programa, que se puede ejecutar de forma independiente dentro del programa. También puede entenderse como el contexto en el que se ejecuta el código. Entonces, los subprocesos son básicamente procesos livianos que se encargan de realizar múltiples tareas dentro de un solo programa. El sistema operativo suele ser responsable de la programación y ejecución de múltiples subprocesos.
¿Qué es el multihilo?
El subproceso múltiple consiste en hacer que varios subprocesos funcionen en paralelo para completar múltiples tareas y mejorar la eficiencia del sistema. Los subprocesos se implementan cuando es necesario completar varias tareas al mismo tiempo.
Los beneficios de usar subprocesos son los siguientes:
·El uso de subprocesos puede poner tareas de programa a largo plazo en segundo plano para su procesamiento
·Usuario La interfaz puede ser más atractivo, de modo que si el usuario hace clic en un botón para activar el procesamiento de ciertos eventos, puede aparecer una barra de progreso para mostrar el progreso del procesamiento
·La velocidad de ejecución del programa puede acelerarse
·Los subprocesos son más útiles en la implementación de algunas tareas en espera, como la entrada del usuario, la lectura y escritura de archivos y el envío y recepción de datos en la red. En este caso, podemos liberar algunos recursos valiosos, como el uso de memoria, etc.
Existen muchos otros beneficios de utilizar subprocesos múltiples, que no se explican aquí.
Algunos antecedentes sobre los modelos de subprocesos
Podemos centrarnos en algunos modelos comúnmente utilizados en el entorno Win32.
·Modelo de subproceso único
En este modelo de subproceso, solo puede haber un subproceso en un proceso, y los procesos restantes deben esperar a que el subproceso actual termine de ejecutarse. La desventaja de este modelo es que el sistema tarda mucho en completar una pequeña tarea.
·Modelo de subprocesos de bloque (modelo multibloque de un solo subproceso STA)
En este modelo, un programa puede contener múltiples subprocesos de ejecución. Aquí, cada hilo se divide en un bloque separado dentro del proceso. Cada proceso puede contener múltiples bloques y puede compartir datos en múltiples bloques. El programa especifica el tiempo de ejecución de los hilos en cada bloque. Todas las solicitudes se serializan a través de Windows Message Queuing, lo que garantiza que solo se pueda acceder a un bloque a la vez, por lo que solo se puede ejecutar un proceso a la vez. La ventaja de este modelo sobre el modelo de subproceso único es que puede responder a tareas solicitadas por varios usuarios al mismo tiempo en lugar de una sola solicitud de usuario. Pero su rendimiento no es muy bueno porque utiliza un modelo de subprocesos serializados y las tareas se ejecutan una tras otra.
·Modelo de bloques multiproceso (modelo de bloques de subprocesos libres)
El modelo de bloques multiproceso (MTA) tiene solo un bloque en cada proceso en lugar de múltiples bloques. Este único bloque controla múltiples subprocesos en lugar de un solo subproceso. Aquí no hay necesidad de una cola de mensajes porque todos los hilos son parte del mismo bloque y se pueden compartir. Un programa de este tipo se ejecuta más rápido que el modelo de subproceso único y STA. Debido a que reduce la carga del sistema, se puede optimizar para reducir el tiempo de inactividad del sistema. Estas aplicaciones son generalmente complejas porque los programadores deben proporcionar sincronización de subprocesos para garantizar que los subprocesos no soliciten el mismo recurso simultáneamente, provocando así una condición de carrera. Aquí es necesario prever un mecanismo de bloqueo. Pero esto puede provocar un estancamiento del sistema.