Problem z obsługą wielowątkowości !

ProQix

Użytkownik
Dołączył
Czerwiec 11, 2008
Posty
86
Witam.
Napisałem sobie wątek i wszystko działa poprawnie dopóki nie użyje w nim linijki

Kod:
Str:=FCharSet[1+Value-FCharSetLength*Nxt]+Str;

Kod:
procedure TCrackMD5Thread.Execute;
var Str:String; Value:Integer; Nxt:Integer;
begin
 FEnable:=True;
 while FEnable = True do begin
  Lopper;
  while FEnder > FBeginer do begin

  Value:=FBeginer;
  Nxt:=0;
  Str:='';
  while Value<>0 do begin
   Dec(Value);
   Nxt:=Value div FCharSetLength;
   Str:=FCharSet[1+Value-FCharSetLength*Nxt]+Str;
   Value:=Nxt;
  end;

    if False then begin
   //if MD5DigestCompare(MD5String(IntToExcelBase(FBeginer)),FHash) then begin
    FindIt(FBeginer);
    Break;
   end;
   INC(FBeginer);
  end;
 end;
end;

tzn, bez tej linijki program działa na wielowątkowości, gdy ją dodam to program zachowuje się jakby wszystkie wątki były jednym inaczej mówiąc moc obliczeniowa rozkłada się na wszystkie wątki i ich wypadkowa
wynosi tyle samo co gdybym uruchomił jeden wątek.
Nie mogę dojść w czym leży problem, nie pojmuje tego.
 
Ostatnia edycja:
Do góry Bottom