...?¿La programación en una computadora de un solo núcleo no requiere programación multiproceso?
Permítanme expresar mi opinión primero. Creo que esta afirmación tiene algo de verdad, pero es un poco paranoica.
Los hilos tienen varias funciones comunes en la práctica:
1. Lógicamente, algunas tareas deben ejecutarse en paralelo. Cada tarea se ejecuta de forma independiente y se comunican entre sí solo cuando es necesario. Todas tienen la oportunidad de ser ejecutadas por la CPU. A menudo no hacemos demasiadas cosas en el subproceso de la GUI, pero realizamos tareas que requieren un uso intensivo de la CPU en el subproceso de trabajo.
2. Para aprovechar al máximo la CPU. Un programa de un solo subproceso solo puede usar una CPU (núcleo). Para utilizar completamente la CPU, se deben usar varios subprocesos para trabajar en múltiples CPU (núcleos). IOCP en Windows puede establecer la cantidad de subprocesos que esperan eventos, y su propósito principal es este.
Volver a esta afirmación. Si la premisa es una sola CPU, el uso de subprocesos múltiples no utilizará completamente la CPU. En cambio, generará una sobrecarga de rendimiento adicional debido al cambio de contexto del subproceso (la sincronización también generará una sobrecarga adicional). Por lo tanto, es razonable no utilizar subprocesos múltiples para mejorar el rendimiento del programa en una sola CPU. Entonces, ¿qué debes hacer si necesitas ejecutar tareas en paralelo? La respuesta es utilizar una máquina de estado. Los programadores pueden programar manualmente la CPU para garantizar que cada tarea pueda ejecutarse de manera razonable, lo que a su vez logra un mejor rendimiento.
Teniendo en cuenta la complejidad, usar subprocesos múltiples es más intuitivo, pero usar una máquina de estados puede evitar problemas relacionados con la sincronización de subprocesos.
En términos generales, es bueno que un programa pueda mejorar su rendimiento aumentando la CPU.