Red de conocimiento informático - Material del sitio web - ¿Qué es el subproceso múltiple?

¿Qué es el subproceso múltiple?

Windows es un sistema multitarea. Si está utilizando Windows 2000 o superior, puede verificar los programas y procesos que se ejecutan actualmente en el sistema a través del Administrador de tareas. ¿Qué es un proceso? Cuando un programa comienza a ejecutarse, es un proceso, que incluye el programa en ejecución y la memoria y los recursos del sistema utilizados por el programa. Un proceso consta de varios subprocesos. Los subprocesos son el flujo de ejecución en el programa. Cada subproceso tiene su propio registro dedicado (puntero de pila, contador de programa, etc.), pero el área de código es * * * * compartida, es decir, diferentes subprocesos pueden ejecutar la misma función. Subprocesos múltiples significa que un programa contiene múltiples flujos de ejecución, es decir, un programa puede ejecutar múltiples subprocesos diferentes al mismo tiempo para realizar diferentes tareas, lo que permite que un solo programa cree múltiples subprocesos de ejecución paralelos para completar sus respectivas tareas. Los navegadores son un buen ejemplo de subprocesos múltiples. En el navegador, puede desplazarse por las páginas mientras descarga subprogramas o imágenes de JAVA, reproducir animaciones y sonidos e imprimir archivos cuando visita nuevas páginas.

La ventaja del subproceso múltiple es que puede mejorar la utilización de la CPU: ningún programador quiere que su programa no tenga nada que hacer durante mucho tiempo. En un programa de subprocesos múltiples, cuando un subproceso debe esperar, la CPU puede ejecutar otros subprocesos en lugar de esperar, lo que mejora enormemente la eficiencia del programa.

Sin embargo, también debemos darnos cuenta de que para utilizar los subprocesos correctamente, los propios subprocesos pueden afectar los aspectos adversos del rendimiento del sistema:

Los subprocesos también son programas, por lo que deben ocupar Cuanto más memoria, más memoria se ocupa.

Múltiples subprocesos requieren coordinación y gestión, por lo que se requiere tiempo de CPU para realizar un seguimiento de los subprocesos.

El acceso de los hilos a * * * recursos se afectará entre sí, por lo que el problema de competir por * * * recursos debe resolverse.

Demasiados subprocesos harán que el control sea demasiado complejo, lo que eventualmente puede generar muchos errores.

Basándonos en la comprensión anterior, podemos utilizar una metáfora para profundizar nuestra comprensión. Supongamos que hay una empresa con muchos empleados desempeñando sus funciones, entonces podemos pensar en esta empresa normal como un proceso y los empleados de la empresa son hilos. Una empresa debe tener al menos un empleado. De manera similar, un proceso contiene al menos un hilo. En una empresa, puede hacer que un empleado haga todo, pero obviamente la eficiencia no es alta y una empresa unipersonal no puede crecer. Un programa también puede usar un solo hilo para hacer las cosas; De hecho, algunos lenguajes obsoletos como Fortune y Basic son así, pero como empresa, la eficiencia es muy baja. Si crea un programa grande, la eficiencia será aún menor; de hecho, ahora casi no existe software comercial de un solo subproceso. Cuantos más empleados tiene una empresa, más salarios tiene que pagarles el jefe, y hay que gastar mucha energía en gestionarlos y coordinar sus conflictos e intereses. Lo mismo ocurre con los programas. Cuantos más subprocesos, más recursos se consumen, se requiere tiempo de CPU para realizar un seguimiento de los subprocesos y se deben resolver problemas como los interbloqueos y la sincronización. En resumen, si no quiere que su empresa se llame "empresa de bolsas de piel", debe tener más empleados; si no quiere que su programa parezca infantil, introduzca subprocesos múltiples en su programa.

Este artículo analizará el mecanismo de subprocesos múltiples en la programación de C# y resolverá los problemas de control de subprocesos y comunicación entre subprocesos a través de algunos ejemplos. Para ahorrar los tediosos pasos de crear una GUI y abordar la naturaleza de los subprocesos con mayor claridad, los siguientes programas son todos programas de consola, la última consola. ReadLine() del programa lo detiene a mitad de camino para que el resultado durante la ejecución se pueda ver claramente.