Arbeiten in Threads, Multicore????

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
laz847
Beiträge: 114
Registriert: Mi 18. Jun 2014, 16:39

Arbeiten in Threads, Multicore????

Beitrag von laz847 »

Hi :) Ich dachte mir vor kurzem ich bau mir da mal nach Jahren mal wieder was in Pascal und hab dann Multicoreunterstützung, ich weiß nicht wieso - ich bin einfach davon ausgegangen das das heute so ist :D... Hab dann gesehen ups läuft ja nur auf einem Kern von 4, ärgerlich.

Da fiel mir das von damals wieder ein, stimmt, dafür brauchte man Threads, kann mir jemand einfach erklären oder zeigen, verlinken wie man das anstellt? Ich werde aus den zu findenden Beispielen nicht schlau, mir gehts auch nicht um riesen Beispiele oder das Ihr mir das schreiben sollt, nur um die einfache grundlegende Struktur.

Ziel -> Ich möchte gern mehrere TCP Connections gleichzeitig bedienen können, siehe Beispiel:
http://www.martinjakobs.de/media/Lazaru ... 1.2010.pdf

Die 3 Clients laufen in einzelnen Prozessen, der Server jedoch in einem, ich möchte gern entweder 3 Server in 3 Threads realisieren oder mit einem Server dann X Threads zur Verarbeitung der eingehenden Daten starten können.

Ich habe den Aufbau schon komplett, nur eben ohne parallele Verarbeitung. Das Beispiel aus dem Link dient zur Darstellung worum es geht.

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Arbeiten in Threads, Multicore????

Beitrag von Socke »

laz847 hat geschrieben:Da fiel mir das von damals wieder ein, stimmt, dafür brauchte man Threads, kann mir jemand einfach erklären oder zeigen, verlinken wie man das anstellt? Ich werde aus den zu findenden Beispielen nicht schlau, mir gehts auch nicht um riesen Beispiele oder das Ihr mir das schreiben sollt, nur um die einfache grundlegende Struktur.
http://wiki.freepascal.org/Multithreade ... utorial/de ggf. auch die englische version
laz847 hat geschrieben:Ziel -> Ich möchte gern mehrere TCP Connections gleichzeitig bedienen können, siehe Beispiel:
http://www.martinjakobs.de/media/Lazaru ... 1.2010.pdf
Wenn du lNet verwenden willst, kannst du natürlich nicht mit den grafischen Komponenten arbeiten; jeder Thread muss dann wie eine Konsolen-Anwendung programmiert werden. Oder du nimmst direkt Synapse mit blocking-Sockets.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

laz847
Beiträge: 114
Registriert: Mi 18. Jun 2014, 16:39

Re: Arbeiten in Threads, Multicore????

Beitrag von laz847 »

Thx Wiki kenn ich aber ich komm gerade nicht ins Thema, ich habe vor Jahren mal etwas in Delphi mit Threads gebaut einen WebSpider aber ich werde aus Wiki gerade nicht so wirklich schlau, ich muss mir wohl mal ein paar Stunden nehmen - wenn ich keine einfacheren Beispiele finde :D

"Wenn du lNet verwenden willst, kannst du natürlich nicht mit den grafischen Komponenten arbeiten; jeder Thread muss dann wie eine Konsolen-Anwendung programmiert werden. Oder du nimmst direkt Synapse mit blocking-Sockets."

Ohh gut das ich das jetzt schon weiß, wollte tatsächlich in den nächsten Stunden den Server einbauen und hätte wohl dafür die visuellen Komponenten genutzt.

Habe den Client aber auch nonvcl geschrieben da er in eine dll musste, das sollte also kein Problem werden.

Hat jemand zufällig nen Link zu nem einfachen Beispiel wo irgendwas in Threads abläuft? Schau mir gerade das in den Examples an, mal sehen obs reicht :D

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: Arbeiten in Threads, Multicore????

Beitrag von theo »

Einfacher als das Beispiel hier geht es kaum:

http://wiki.freepascal.org/Multithreade ... se_TThread

OK. die Synchronisation mit dem MainThread kannst du nich weglassen, wenn du kein visuelles Feedback brauchst.

laz847
Beiträge: 114
Registriert: Mi 18. Jun 2014, 16:39

Re: Arbeiten in Threads, Multicore????

Beitrag von laz847 »

Hmm ok ich glaub ich steh erstmal noch vor nem anderen problem, ich mache dann nochmal nen thread auf wenn das gelöst ist, danke erstmal ;)

Antworten