Alguém sabe se é possível no Windows, via programação eu alterar a PRIORIDADE de um processo depois que ele estiver rodando? Seria algo do tipo do comando abaixo, porém necessito para um processo em execução:
Bom, você teria que ter a instância de process na mão para poder alterar (se é que é possível). Isso eu não sei como fazer (pegar a instância de outras aplicaçôes). Talvez seja possível e fácil de fazer (se o SO permitir) com processos filhos.
Você diz, prioridade de verdade? Tipo Linux? Numa boa, sem despertar flames: isso não existe de verdade no windows. Aliás, nem sei se existe de mentira (pelo seu post, parece que sim).
Um processo no windows define o momento em que ele vai parar de usar o processador. Se ele travar o processador para ele, babau!
Já no Linux (e em vários outros SO’s), o kernel e as prioridades definem o tempo de acesso ao processador. Ou seja, se ele demorar demais e outros processos estiverem na fila, o kernel dá uma paradinha no processo demorado e dá um tempo pro próximo processo priorizado da fila.
Aham, a sua afirmação valia no tempo do Windows 3.1 (16 bits), ou do MacOS antes da versão 10 (Mac OSX).
O Windows NT e seus sucessores (2000, XP, Vista etc.) usam um scheduler como os outros sistemas operacionais tradicionais (Unix/Linux, etc.)
Só o Windows 3.1 ou anteriores requeriam que um processo explicitamente passasse o controle para outro processo, usando a API Yield (nesse tempo não havia nem a API Sleep, para ter uma idéia).
Para você alterar a prioridade de um processo já rodando, o seu usuário (ou processo C/C++) tem de ter as permissões corretas, saber seu PID, obter um “process handle” a partir do PID (API do Windows OpenProcess) , e então você precisa usar a API do Windows SetPriorityClass.
realmente thingol, você tem razão e eu fui enfático demais. Houve uma mudança nos padrões do windows mesmo. Mas foi após NT (no nt implementaram mas não funcionava direito). E mesmo no 2000 dava um certo pau (e você não tinha possibilidade de redefinição de prioridade dos serviços já rodando). O XP (na verdade o 2003 e 2005, porque falamos de servidores, eu creio) dá algum grau de prioridade (mas o gerenciamento não é simples).
O Vista não tem mais esse problema, porque afinal você mal consegue usar ele sozinho (isso é triste mais é sério, porque um dos meus notebooks tem essa porcaria, e atualizado com sp1).
[quote=otaviofcs]realmente thingol, você tem razão e eu fui enfático demais. Houve uma mudança nos padrões do windows mesmo. Mas foi após NT (no nt implementaram mas não funcionava direito). E mesmo no 2000 dava um certo pau (e você não tinha possibilidade de redefinição de prioridade dos serviços já rodando). O XP (na verdade o 2003 e 2005, porque falamos de servidores, eu creio) dá algum grau de prioridade (mas o gerenciamento não é simples).
O Vista não tem mais esse problema, porque afinal você mal consegue usar ele sozinho (isso é triste mais é sério, porque um dos meus notebooks tem essa porcaria, e atualizado com sp1).