Server mit Lazarus (auf Raspberry) (Multi-Sockets?)

Alle Fragen zur Netzwerkkommunikation
Antworten
Kenrai
Beiträge: 2
Registriert: Fr 15. Mai 2015, 16:34

Server mit Lazarus (auf Raspberry) (Multi-Sockets?)

Beitrag von Kenrai »

Hallo erstmal, bin neu hier im Forum :D

vorerst: ich habe hauptsächlich nur mit Delphi Erfahrung, damit würde ich sagen auch relativ gut aber Lazarus ist für mich noch ein bisschen Neuland.

Nun meine Situation: ich will eine Server-Application auf einem Raspberry laufen lassen, geht leider nicht mit Delphi
daher möchte ich Lazarus benutzen, der Server soll u.a. als Mid-Server fungieren und mehrere Clients sollen mit ihm gleichzeitig
kommunizieren. In Delphi konnte man das mit "DataSnap" lösen, dieser hat automatisch die einzelnen Clients auf Threads aufgeteilt.

Hier stellt sich meine Problematik: Wie sollte ich vorgehen die Clients auf Threads aufzuteilen (dynamisch) damit keine Kollisionen auftreten? Habe da leider echt 0 Ahnung wie ich anfangen soll :?

Falls es schon Foreneinträge geben sollte die mir hier vllt helfen, bitte gerne Weiterverlinken! :)

Danke im Voraus und schönes Wochenende!

-Eugeene

Warf
Beiträge: 1910
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Server mit Lazarus (auf Raspberry) (Multi-Sockets?)

Beitrag von Warf »

Da gibt es 2 gängige Modelle, das Worker-Modell, und das Worker-Pool-Modell
Worker Modell:
Im Dispatcher Thread nimmst du die Verbindungen an, erstellst einen neuen Worker Thread, und übergibst die Verarbeitung dann an diese.
Gut für aufwendige Arbeit der Worker Threads
Bild

Worker-Pool-Modell:
Es gibt einen Fixen Pool von N Threads, und eine Liste mit den Ausstehenden Anfragen. Der Dispatcher nimmt die Anfragen an, schreibt sie in die Liste und die Worker Threads arbeiten, sobald einer der Worker Threads fertig ist nimmt er sich die nächste Anfrage aus der liste und behandelt diese.
Gut für kurzlebige Threads, wenn die Erstellung und Zerstörung von Threads zu aufwendig wäre.
Bild

Link

PS:
Wenn die Threads komplett eigenständig laufen sollen, und kaum/keine IPC nötig ist finde ich fork() einfacher als Threads

Kenrai
Beiträge: 2
Registriert: Fr 15. Mai 2015, 16:34

Re: Server mit Lazarus (auf Raspberry) (Multi-Sockets?)

Beitrag von Kenrai »

Vielen Dank, nach genau so etwas habe ich gesucht!

Schönes Wochenende noch~

Antworten