Problemão: Como assegurar a execução completa de uma thread

Delphi

12/05/2004

Olá pessoal!

Tenho um problemão! Espero que me ajudem.
Estou trabalhando com threads certo? Essas threads acessam uma matriz que é comum a todas elas. O problema é que quando uma thread estiver acessando essa matriz e por acaso perder o processador, a outra thread não poderá acessar a matriz. Tenho que garantir quan quando uma thread comece a fazer uso da matriz e perder o processador as outras threads não executem....
Espero ter sido claro não sei, mas teria que fazer algo assim(em alto nivel)

lock();

acesso a matriz

desLock();

Dai se no meio uma outra thread tentar acessar a amtriz naun vai conseguir pq ve que ela esta bloqueada.

Espero que consigam me ajudar....Preciso MUITO disso.

Desde já agradeço
samuel Gubert


Sgubert

Sgubert

Curtidas 0

Respostas

Maxwell_monteiro

Maxwell_monteiro

12/05/2004

Bem quando uma thread pego o processador para ela mesma nada mais é executado no processador! a não ser que seja um Pentium Hyper Thread que trabalha com processamento paralelo em um unico computador!

mas bem na verdade o que vc gostaria era tornar as modificacoes feitas na matriz atomicas e para isso vc usa o metodo Synchronize da classe thread este metodo garante que quando vc executar sua função thread nenhuma outra thread interfira no desenrolar da funcao.

Exemplo

procedure Somar(x, y: integer);
begin
...
end;

procedure TMyThread.Execute;
begin
Synchronize(Somar(matriz[0][0], matriz[1][1]));
end;


GOSTEI 0
POSTAR