2008-09-06 9 views

Respuesta

28

En términos de velocidad de cálculo, No. De hecho, las cosas se ralentizarán debido a la sobrecarga de administrar los hilos.

En términos de capacidad de respuesta, sí. Por ejemplo, puede esperar un hilo en una operación IO y hacer que otro ejecute una GUI al mismo tiempo.

+8

En un sentido académico, tiene toda la razón. Sin embargo, ningún programa en la tierra es 100% trabajo de la CPU, lo que significa que en la práctica, múltiples hilos pueden tener un impacto positivo a pesar de que solo hay una unidad de computación –

+2

¿Puede esta respuesta ser más elaborada? Por ejemplo, ¿qué beneficio tiene el multihilo en comparación con los multiprocesadores? – starcorn

1

Independientemente del número de CPU disponibles, si necesita multitareas preventivas y/o aplicaciones con componentes asíncronos (es decir, casi cualquier cosa que combine una GUI sensible con una cantidad de computación no trivial o procesamiento continuo de E/S), el multihilo funciona mucho mejor que la alternativa, que es usar múltiples procesos para cada aplicación.

Esto se debe a que los hilos en el mismo proceso pueden intercambiar datos de manera mucho más eficiente que los procesos múltiples, porque comparten el mismo contexto de memoria.

Consulte this Wikipedia article on computer multitasking para obtener una explicación bastante concisa de estos problemas.

9

Depende de su aplicación. Si pasa todo el tiempo usando la CPU, el multihilo simplemente ralentizará las cosas, aunque es posible que pueda usarlo para responder mejor al usuario y así dar la impresión de mejor rendimiento.

Sin embargo, si su código está limitado por otras cosas, por ejemplo, utilizando el sistema de archivos, la red o cualquier otro recurso, multithreading puede ayudar, ya que permite que su aplicación se comporte de manera asincrónica. Entonces, mientras un hilo espera que un archivo se cargue desde el disco, otro puede consultar un servidor web remoto y otro redibujar la GUI, mientras que otro está haciendo varios cálculos.

Trabajar con varios subprocesos también puede simplificar la lógica de su negocio, ya que no tiene que prestar tanta atención a cómo varias tareas independientes deben intercalarse. Si la lógica de programación del sistema operativo es mejor que la suya, entonces es posible que vea un mejor rendimiento.

2

Sí, hay una ventaja de utilizar varios subprocesos (o procesos) en una sola CPU: si un subproceso está ocupado esperando algo, otros pueden continuar haciendo un trabajo útil.

Sin embargo, esto puede ser compensado por la sobrecarga de la conmutación de tareas. Deberá comparar y/o perfilar su aplicación en hardware de grado de producción para averiguarlo.

1

¡Absolutamente! Si haces cualquier tipo de E/S, hay una gran ventaja de tener un sistema multiproceso. Mientras un hilo espera una operación de E/S (que es relativamente lenta), otro hilo puede hacer un trabajo útil.

4

Puede considerar el uso de múltiples hilos en una sola CPU

  1. Si utiliza los recursos de red
  2. Si lo hace operaciones de alto intensiva IO
  3. Si extraer datos de una base de datos
  4. Si explota otras cosas con posibles retrasos
  5. Si desea hacer su aplicación con la reacción ultraspeed

Cuando no se debe utilizar múltiples hilos en una sola CPU

  1. operaciones de alto intensivo que hacen casi el 100% de uso de CPU
  2. Si no está seguro de cómo utilizar hilos y la sincronización
  3. Si su aplicación no se puede dividir en varios procesos paralelos
Cuestiones relacionadas