[gelöst] TThread - prinzipielles Vorgehen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: TThread - prinzipielles Vorgehen

Beitrag von Euklid »

Habe eben mal das Nil durch einen entsprechenden Pointer ersetzt. Das Problem tritt trotzdem auf. Möglicherweise handelt es sich um einen Bug in der MTProcs?

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: TThread - prinzipielles Vorgehen

Beitrag von Scotty »

Euklid hat geschrieben:Bug in der MTProcs
Ich habe Matthias Gärtner schon mal angeschrieben und mein einfaches Stringbeispiel angehängt. Bisher noch keine Antwort. Es wäre schön, wenn zu den Addons ein RSS-Feed à la Sourceforge gehören könnte oder eine automatische SVN Prüfung erfolgen würde. Ich melde mich jedenfalls wieder, wenn ich mehr weiß (oder das doch nach Deinem Beispiel mit Waitfor() programmiere :oops: )

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: [gelöst] TThread - prinzipielles Vorgehen

Beitrag von Scotty »

Jetzt hatte ich mal etwas Muse, mich mit dem Multithreading zu beschäftigen. Die MTProcs kann man ausgezeichnet nutzen, wenn entweder die globale Variable bei jedem Aufruf "aufgefrischt" wird (ProcThreadPool.Free; ProcThreadPool:=ProcThreadPool.Create) oder man einfach eine eigene lokale Variable benutzt. Dann klappt es auch mit wiederholten DoParallel()'s. Neben dieser gut beschriebenen Funktion gibt es noch EnterPoolCriticalSection und LeavePoolCriticalSection, innerhalb derer man leicht mit dem Rest des Programms Daten austauschen kann. Alles sehr angenehm zu bedienen. Mein Programm braucht jetzt ein Drittel der Zeit (es laufen 3 Prozesse parallel bzw. 7 mit Hyperthreading, was nicht mehr viel bringt).

Edit: http://bugs.freepascal.org/view.php?id=14319" onclick="window.open(this.href);return false;

Antworten