2012-04-15 10 views
10

Vi asm ("pause") en el código de otras personas y me pregunto qué hace. El código es compilado por g ++ en Linux.Qué hace asm ("pause") y por qué usarlo

Esta línea está en un bucle que está en otro hilo, que constantemente sondea si ocurre una actualización. Sospecho que hace que el programa se detenga un poco antes de volver a sondear, pero me pregunto (1) ¿Es correcto mi suposición (2) por qué es necesario hacer una pausa? La máquina en la que ejecutamos el código tiene muchos procesadores y yo, el hilo, simplemente seguiré viéndolo.

+0

¿Es código de kernel o código de aplicación? –

Respuesta

15

Básicamente se denomina bucle de giro o espera ocupada. Consumiría la mayor cantidad de recursos de CPU que pueda. Esto desperdicia la potencia de procesamiento de la CPU y aumenta el consumo de energía.

Al poner las instrucciones de pausa, está insinuando al procesador que "esto es un ciclo de giro". Esto obliga al procesador a no ser demasiado inteligente para hacer predicciones (optimizaciones) innecesarias. Además, libera tiempo de CPU para usarlo en otros casos (por ejemplo, Hyperthreading).

Cuestiones relacionadas