Olá, gostaria de saber como deixar meu exe compativel com sistemas que possuem multiplos processadores...
Exemplo: em um sistema com 2 núcleos sem outros processos (pesados) rodando ele teria uma eficiencia X , onde o 1º núcleo cuidaria do SO e etc e o 2º apenas do meu sistema, sendo esse o aproveitamento máximo mas em um sistema com 3 ou mais núcleos o desempenho deveria ser aumentado ao utilizar mais de um processador para aumentar a eficiencia de processamento do meu executável.
Os processos que necessito dessa "melhoria" são lineares, ou seja, preciso finalizar um bloco para executar o próximo, sendo assim o uso de Threads não seria a solução...
Sei que existem programas e jogos que utilizam esse tipo de recurso, não sei se atraves de Threads, no caso de jogos talvez sim, mas tem o exemplo do winrar que aparentemente é linear pois realiza gravação de um arquivo.
Como aproveitar a presença de multiplos processadores?
Moderador: Moderadores
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
Re: Como aproveitar a presença de multiplos processadores?
Bom, o SO gerencia isto muito bem, mas vc precisa usar threads para que o seu sistema abra multiplos processos. O SO gerencia qual o processador assumirá o trabalho.
Você pode também, via API escolher qual o processador vai ser usado em uma determinada thread, mas acho que isto é deveras desnecesário.
Pelo gerenciador de tarefas é possivel definir afinidades de processos com uma determinada CPU.
procure por "thread affinity source code" no google, vai achar muitos artigos a respeito.
Você pode também, via API escolher qual o processador vai ser usado em uma determinada thread, mas acho que isto é deveras desnecesário.
Pelo gerenciador de tarefas é possivel definir afinidades de processos com uma determinada CPU.
procure por "thread affinity source code" no google, vai achar muitos artigos a respeito.
-
sambomb
- Usuário Nível 3

- Mensagens: 250
- Registrado em: 24 Out 2008 17:02
- Localização: Itaocara - RJ - Brasil
Re: Como aproveitar a presença de multiplos processadores?
Até ae eu já sabia.... Queria saber se havia algum modo de dividir o processamento entre múltiplos processadores, mas aparentemente não é possível...
Só existem soluções para realizar "múltiplos processos"...
Mesmo assim obrigado
Obs.: Pode dar um exemplo de um local em que seria interessante o uso de threads?
Só existem soluções para realizar "múltiplos processos"...
Mesmo assim obrigado
Obs.: Pode dar um exemplo de um local em que seria interessante o uso de threads?

Rca Sistemas - Itaocara - RJ
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
Re: Como aproveitar a presença de multiplos processadores?
bom, dividir um mesmo processo para 2 processador ai não tem jeito não.
Poucos processos seriam possíveis, mas quando um determinado processo depende de um resultador de fatores do inicio do mesmo, seria impossível dividir a tarefa, e mesmo quando existe esta possibilidade é algo que tem que ser muito bem programado.
Igual um processamento de uma image. Dependo do efeito você poderá usar 2 processadores, 1 faz a primeira parte da imagem e outro a segunda parte. Mas existem efeitos que nao tem como um segundo processador fazer o restante, pois ele depende de como irá ficar o início da imagem.
Então tudo depende.
Poucos processos seriam possíveis, mas quando um determinado processo depende de um resultador de fatores do inicio do mesmo, seria impossível dividir a tarefa, e mesmo quando existe esta possibilidade é algo que tem que ser muito bem programado.
Igual um processamento de uma image. Dependo do efeito você poderá usar 2 processadores, 1 faz a primeira parte da imagem e outro a segunda parte. Mas existem efeitos que nao tem como um segundo processador fazer o restante, pois ele depende de como irá ficar o início da imagem.
Então tudo depende.
-
sambomb
- Usuário Nível 3

- Mensagens: 250
- Registrado em: 24 Out 2008 17:02
- Localização: Itaocara - RJ - Brasil
Re: Como aproveitar a presença de multiplos processadores?
Pelo visto é realmente inviável... Mas por enquanto não irei mais precisar desse artificio, achei um erro no meu código que estava atrasando o programa, agora de mais de 1 hora para executar o bloco demoro 4:31 minutos.
Observação: o erro estava em basicamente 1 linha apenas.
Observação: o erro estava em basicamente 1 linha apenas.
Código: Selecionar todos
...
//-- Calcular o tamanho do txt
//nLinhas := MlCount( cTxt) //-- O erro estava aqui, faltavam os parâmetros
nLinhas := MlCount( cTxt,3000,,,.T.)
oMeter:nTotal := nLinhas
oText:SetText("Calculando estrutura do arquivo")
//-- Roda todas as linhas do TXT
for i := 1 TO nLinhas
...

Rca Sistemas - Itaocara - RJ