AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Multithreading zugriff auf eine THashedStringlist in einem SLB
Thema durchsuchen
Ansicht
Themen-Optionen

Multithreading zugriff auf eine THashedStringlist in einem SLB

Ein Thema von QuickAndDirty · begonnen am 27. Sep 2012 · letzter Beitrag vom 27. Sep 2012
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#1

Multithreading zugriff auf eine THashedStringlist in einem SLB

  Alt 27. Sep 2012, 17:14
Hintergrund:
Also ich schreibe einen SLB der Folgendes leistens wird:
Der SLB vermittelt zwischen einem Webserver (der nur HTML Rendert) und mehreren Instanzen eines Applikationsserver die auf dem selben Rechner laufen. Es wird ein Socket vermittelt. d.h. jede Instanz läuft mit einem anderen Port und später ist das ganze auch auf mehrere Rechner skalierbar.

Dieser SLB verwaltet also eine liste mit Statistischen Daten über Applikationsserver, wie z.B. deren momentan gequeute Jobs oder einen "Lastwert" .

Problem:
Wenn ich auf diese Liste zugreife und z.B. den Server mit der geringsten last gefunden habe,
kann es sein das ein anderer Thread im SLB diesen auch findet und ihn auslastet bevor ich diese Liste aktualisieren kann.

Ist das richtig ?

Muss deswegen alles in einer Criticalsection passieren?

Delphi-Quellcode:
job:=DecodeRequest(sRequest);
CS.Enter;
ServerDaten := getServer(job); //ServerDaten ist ein Element einer global gehaltenen Liste.
ServerDaten.Jobs.add(job.ID,job.timeout);
ServerDaten.lastwert := getLW(ServerDaten.Jobs);
sRespons := EncodeResponse(ServerDaten.Socket);
CS.Leave;
Bremst das nicht definitiv den Server aus , wenn quasi 90% des Codes in einer Crtitcalsection ausgeführt werden?
Einen anderen Weg gibt es wohl nicht, oder?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (27. Sep 2012 um 17:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Multithreading zugriff auf eine THashedStringlist in einem SLB

  Alt 27. Sep 2012, 20:09
Generell solltest du den Zugriff auf deine Liste definitiv durch CriticalSections absichern. Du müsstest halt schauen, wie du deinen Server designst, sodass wirklich nur ein Minimum an Code in der CriticalSection liegt.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz