AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Schnellste Kommunikation zwischen 2 Prozessen
Thema durchsuchen
Ansicht
Themen-Optionen

Schnellste Kommunikation zwischen 2 Prozessen

Ein Thema von Arakis · begonnen am 27. Feb 2004 · letzter Beitrag vom 1. Mär 2004
Antwort Antwort
Seite 1 von 2  1 2      
Arakis

Registriert seit: 29. Aug 2002
30 Beiträge
 
#1

Schnellste Kommunikation zwischen 2 Prozessen

  Alt 27. Feb 2004, 09:44
Hallo,
ich wüsste gerne was die absolut schnellste Kommunikations zwischen 2 Prozessen auf einem Computer ist. Da meine Anwendung irgendwann mehr als 2 GB Arbeitsspeicher benötigen wird, Windows einem Prozess aber nur 2 Gigabyte(oder 3 mit einem Trick) zuweisen kann, versuche ich dass zu umgehen in dem mehrere Prozesse meine Daten bereitstellen. Es werden sehr, sehr viele Lese-/Schreibvorgänge gemacht, jedoch immer mit kleinen Datenmengen. (Um genau zu sein, die Get-/Set-Properties meiner Klassen greifen z.Z. immer genau auf den gemeinsamen Datenbestand zu).

Nun denn, wemm es Interessiert, noch ein paar weitere Informationen: In Wirklichkeit nutze ich .NET(zwar net Delphi als Syntax, aber das ist ja egal). In einem globalem DataSet lade ich alle wichtigen Tabellen der SQL-Datenbank. Über Wrapper-Klassen, die viel Get-/Set-Properties haben, greife ich auf die Daten in "Echtzeit" zu. Zukünftig sollen diese Get-/Set-Properties auf den Datenbestand eines anderen Prozesses zugreifen, mit maximaler Geschwindigkeit, da dies sehr häufig passieren wird.

Ein Problem dürfte z.B. sein dass .NET managed Code ist.

Wer jetzt mit .NET Remoting kommt, den schlag ich


Oder kann das zukünftige 64-Bit-Framework mehr als 2 GigaByte verwalten, dann brauch ich ja gar nix zu ändern
Ein 64-Bit-Server für meine Anwendung aufzutreiben ist nämlich prinzipiell kein Problem

Wem es interessiert was für eine "Anwendung" gemeint ist, der kann hier selber nachschauen:
Ein Onlinespiel " StarTrek: The New Empire "
http://stne.net
  Mit Zitat antworten Zitat
xeron

Registriert seit: 10. Jan 2004
Ort: Kaltern a.d.W
11 Beiträge
 
#2

Re: Schnellste Kommunikation zwischen 2 Prozessen

  Alt 27. Feb 2004, 11:40
wow... was ist denn das 4 ein monsterprog.... mehr als 2 gb ram...
es GIB LEI ...
  Mit Zitat antworten Zitat
ims

Registriert seit: 23. Jul 2003
Ort: Sirnach
157 Beiträge
 
Delphi 7 Professional
 
#3

Re: Schnellste Kommunikation zwischen 2 Prozessen

  Alt 27. Feb 2004, 11:44
frag doch mal bei den entwicklern von ogame nach. wenn du glück hast erfährst du wie sie es gelöst haben. die haben bestimmt viel mehr traffic als du


gruss, dave
  Mit Zitat antworten Zitat
Arakis

Registriert seit: 29. Aug 2002
30 Beiträge
 
#4

Re: Schnellste Kommunikation zwischen 2 Prozessen

  Alt 27. Feb 2004, 12:32
Die Nehmen PHP. Jeder Seiten-Aufruf läuft in einer seperaten php.exe hab, die per Script-Sprache auf die Daten einer zentralen SQL-Datenbank zugreifen. Unschön, da die Daten nicht wirklich "shared" sind sondern sondern Alle Objektinstanzen haben so gesehen eine Kopie des Datensatzes bei eine Abfrage. Bei meiner Anwendung aber zeigen alle Objekinstanzen der selben Objekt-Identität auf den _selben_ Datenbestand. Dadurch wird z.B. cheaten oder provizieren von Fehlern wegen lahmer DB nahezu unmöglich. Und jeden Datensatz zu "locken" wäre bei einem MMOG(Massen Multiplayer Online Game) ein wenig krank. Außerdem braucht meine Anwendung die Performance, da in STNE ein "bisschen" mehr Daten benötigt zum visualisieren einer Seite oder ausführen einer komplexeren Aktion, STNE ist gerenell viel komplexer als ogame. OGame ist ein Zahlenschiebespiel, mehr nicht
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Schnellste Kommunikation zwischen 2 Prozessen

  Alt 27. Feb 2004, 12:52
Ich weiß jetzt nicht, welche Möglichkeiten unter .NET alle zur Verfügung stehen, aber ich denke, Memory Mapped Files sind die schnellste Möglichkeit. Dabei wird einfach ein Teil des Kernelspeichers alloziert, auf den dann in anderen Prozessen zugegriffen werden kann. Bei dieser Lösung musst du halt das meiste selber machen, da es keine Benachrichtigungs-Möglichkeiten o.ä. bietet. Es ist einfach nur shared memory. Zumindest war das bei der Win32API so.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#6

Re: Schnellste Kommunikation zwischen 2 Prozessen

  Alt 27. Feb 2004, 13:02
Memory Mapped Files werden wohl wirklich die schnellste Lösung sein !
in diesem Buch ist auch ein nettes Beispiel dazu drin

http://www.amazon.de/exec/obidos/ASI...259671-2452055

(nicht zu verwechseln mit Deberenz )
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Schnellste Kommunikation zwischen 2 Prozessen

  Alt 27. Feb 2004, 13:42
Zitat von stoxx:
Memory Mapped Files werden wohl wirklich die schnellste Lösung sein !
Warum nicht?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#8

Re: Schnellste Kommunikation zwischen 2 Prozessen

  Alt 27. Feb 2004, 13:55
Zitat von Chewie:
Zitat von stoxx:
Memory Mapped Files werden wohl wirklich die schnellste Lösung sein !
Warum nicht?
Wieso "warum nicht?"? stoxx stimmt dir doch zu.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Schnellste Kommunikation zwischen 2 Prozessen

  Alt 27. Feb 2004, 14:10
Ups, ich hab da ein nicht gelesen
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#10

Re: Schnellste Kommunikation zwischen 2 Prozessen

  Alt 27. Feb 2004, 14:21
Da es eigentlich nicht soooo kompliziert ist, hänge ich das Beispiel einfach mal dran.
Ich hoffe, die Autoren haben nix dagegen

Das Beispiel ist mit Synchronisation.
Die Daten werden übrigens deswegen in einer Schleife in das Array of Char geschrieben. Da so gezeigt werden soll, was passiert, wenn das ganze nicht synchronisiert ist.
(Auch allgemein, wenn Threads nicht synchronisiert sind)
(es sind noch mehr beispiele auf der CD, wo man dann sieht, was passiert, wenn unsyncrhonisiert ohne Critical Sections arbeitet)
Angehängte Dateien
Dateityp: zip mmf.zip (7,5 KB, 62x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:19 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