Einzelnen Beitrag anzeigen

BorisN

Registriert seit: 15. Sep 2003
6 Beiträge
 
#6

Re: Zuweisen unterschiedlicher Aufgabe für Threads

  Alt 13. Jul 2004, 09:53
In deinem Fall fängt jeder Thread bei Index 0 an. Solange also der Sync nicht erfolgt arbeiten alle Threads den gleichen Eintrag ab. Besser wäre hier eine Art Queue (Qarteschlange) in Form von TThreadList, in die Du Aufgaben Reinstellst, die jeder Thread abholen kann. Das Reinstellen und Abholen muss natürlich synchronisiert werden (TThreadList.LockList).

In etwa:

Code:
Unit MyThread;

Var
  MainList: TThreadList;

procedure Thread.Execute;
Var
  List: TList;
  Entry: TObject; // oder was auch immer du in der Liste hast
begin
  List := MainList.LockList;
  Entry := List.Items[0];
  List.Delete(0);
  MainList.UnLockList;

  // Verarbeiten:
  If Entry.Aufgabe = eaLesen then
  begin
    // ...
  end;

  Entry.Free;
end;

procedure Button1Click(Sender....);
Var
  List: TList;
begin
  // Eintrag hinzufügen Bsp.
  List := MainList.LockList;
  List.Add(MyObject);
  MainList.UnLockList;
end;
Ist nur eine Grobe Ablaufbeschreibung.
  Mit Zitat antworten Zitat