Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Probleme mit Threads und Aufgaben-Pool

  Alt 17. Mai 2005, 21:26
Dein TJob ist ein String, meine Threadlist ist eine Liste von Pointern.... Was kann man da machen? Wir bauen uns eine threadsichere Stringliste.
Delphi-Quellcode:
uses SyncObjs;

Type
  TJobList = Class
  Private
    fList : TStringlist;
    fCS : TCriticalSecttion;
  Public
    Constructor Create;
    Destructor Destroy; Override;
    Procedure AddJob (aJob : TJob);
    Function GetNextJob : TJob;
    Function JobsAvailable : Boolean;
    End;

Constructor TJobList.Create;
Begin
  fCS := TCriticalSection.Create;
  fList := TStringlist.Create;
End;

Destructor Destroy;
Begin
  fCS.Free;
  fList.Free;
  inherited;
End;

Procedure TJobList.AddJob (aJob : TJob);
Begin
  fCS.Enter;
  Try
    fList.Add (aJob);
  Finally
    fCS.Leave;
    End
End;

Function TJobList.GetNextJob : TJob;
Begin
  fCS.Enter;
  Try
    Result := fList[0];
    fList.Delete (0);
  Finally
    fCS.Leave;
    End
End;

Function TJobList.JobsAvailable : Boolean;
Begin
  fCS.Enter;
  Try
    Result := (fList.Count > 0 );
  Finally
    fCS.Leave;
    End
End;
Wenn Du hier unsicher bist, dann fang doch mit einem Thread erstmal an. Der soll schön im Hintergrund die Jobs nacheinander abarbeiten. Wenn das klappt, dann versuche es mit 2 Threads usw.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat