Problem z wątkami

0

Witam!
Moje pytanie jest takie... Jak ustalić priorytet wątków...?

Niby proste, co nie? A jednak. W moemncie gdy tworzę wątek i uruchamiam go to mam wrażenie, że priorytet ustalany jest tylko dla procedury "Execute; override" a nie dla innych, poszczególnych procedur tegoż wątku... Wykonywana operacja w procedurze "Execute" jest uruchamiana szybko i okienko się nie wiesza natomiast jeśli chodzi o pozostałe procedury tego wątku to sprawa jest dokładnie odwrotna... Jak temu zaradzić? Jak ustalić niski priorytet wykonywania dla pozostałych procedur tego wątku...

Przykład:

TMyThread = class(TThread)
private
protected
procedure Execute; override; // szybko
procedure Operacja1; // wolno
procedure Operacja2; // wolno
procedure Operacja3; // wolno
end;

Dzięki za pomoc...!

0

Nie jestem znawcą w kwesti wątków ale wydaje mi się, że tylko procedura Execute i inne procedury wywoływane z niej należą do odzielnego wątku. Więc jeżeli wywołujesz procedury Operacja to działasz w ramach wątku wywołującego (są to normalne procedury klasy). Zrób np. tak:

TMyThread = class(TThread)
  public
    Code : Byte;
  protected
    procedure Execute; override;   // szybko
    procedure Operacja1;              // wolno
    procedure Operacja2;              // wolno
    procedure Operacja3;              // wolno
  end;

procedure TMyThread.Execute;
begin
  inherited;
  case Code of
    1 : Operacja1;
    2 : Operacja2;
    3 : Operacja3;
  end;
end;

Przed wywołaniem Execute ustalasz Code i powinno hulać :) .

0

Nie jestem znawcą w kwesti wątków ale wydaje mi się, że tylko procedura Execute i inne procedury wywoływane z niej należą do odzielnego wątku.

Dokładnie tak. Pozostałe metody to zwykłe metody obiektu, który "obudowuje" niskopoziomowe mechanizmy Win32 zajmujące się obsługą wątków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1