2008-08-27 9 views
11

En Windows Me puede hacer:Cambiar prioridad del proceso actual en C

HANDLE hCurrentProcess = GetCurrentProcess(); 

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS); 

¿Cómo puedo hacer la misma cosa en * nix?

+0

http://stackoverflow.com/questions/29621/change-own-process-priority-in-c –

+0

Se puede disminuir su la prioridad del propio proceso sin ser superusuario? –

+0

Sí, aunque por lo general no puede volver a subirlo. – thelsdj

Respuesta

22

Probar:

#include <sys/time.h> 
#include <sys/resource.h> 

int main(){ 
    setpriority(PRIO_PROCESS, 0, -20); 
} 

Tenga en cuenta que debe estar ejecutando como superusuario para que esto funcione.

(para más información, tipo 'hombre setpriority' en un símbolo.)

1

@ Allain

¿Puede usted bajar su propio proceso de prioridad sin ser superusuario?

Sure. Tenga en cuenta, sin embargo, que esta es una calle de sentido único. Ni siquiera puedes volver al punto de partida. E incluso pequeñas reducciones en la prioridad pueden tener efectos sorprendentemente grandes en el tiempo de ejecución cuando hay una carga significativa en el sistema.

4

Si hace algo como esto en Unix, desea (como root) modificar su tarea y establecer el bit s. Luego puede cambiar quién está ejecutando, cuál es su prioridad, la programación de sus hilos, etc. en tiempo de ejecución.

Es muy bien siempre y cuando no está escribiendo una aplicación masivamente multiproceso con un error en ella, así que se tome sobre una caja 48 de la CPU y nadie puede cerrar abajo debido a su tenga cada hilado de la CPU al 100% con todas hilo establecido en SHED_FIFO (se ejecuta hasta su finalización) ejecutándose como root.

nah .. yo no estaría hablando de la experiencia ....

Cuestiones relacionadas