¿Multi-threading con una rutina vinculada a la CPU?

Recibo señales contradictorias sobre si tiene sentido que varios subprocesos realicen la misma rutina vinculada a la CPU (cada subproceso analiza datos diferentes, por supuesto).

Si está vinculado a la CPU, ya está gravando el procesador, ¿verdad? Entonces, ¿por qué tendría sentido agregar trabajo de CPU adicional? ¿La idea es que debería intentar hacer coincidir la cantidad de subprocesos vinculados a la CPU con los núcleos?

¿Qué pasa con el caso de una máquina de un solo núcleo? ¿Alguna vez tiene sentido el subprocesamiento múltiple de una operación vinculada a la CPU?

Gracias de antemano.

preguntado el 11 de junio de 12 a las 19:06

Subprocesamiento múltiple de una rutina vinculada a la CPU es casi todo el sentido que puede tener. -

1 Respuestas

Si está vinculado a la CPU, ya está gravando el procesador, ¿verdad? Entonces, ¿por qué tendría sentido agregar trabajo de CPU adicional? ¿La idea es que debería intentar hacer coincidir la cantidad de subprocesos vinculados a la CPU con los núcleos?

Sí, esta es básicamente la idea. Si su algoritmo está vinculado a la CPU, vinculará un núcleo de procesamiento. Si hay 4 en su sistema, usar los 4 puede darle un impulso significativo en el rendimiento general. Sin varios subprocesos, solo usará un único núcleo para procesar sus datos.

¿Qué pasa con el caso de una máquina de un solo núcleo? ¿Alguna vez tiene sentido el subprocesamiento múltiple de una operación vinculada a la CPU?

Puede, pero generalmente solo si no es puramente Límite de CPU. Si su rutina está completamente vinculada a la CPU, normalmente no desea más de 1 subproceso por núcleo. Sin embargo, si ciertas partes de su algoritmo tienen otras características y están limitadas por otras cosas, esa parte puede a veces Benefíciese de tener la rutina general enhebrada.

Respondido el 11 de junio de 12 a las 19:06

Gracias por esta gran respuesta. - jglouie

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.