Dll Injection, Performance behalten -> Threads mit Parametern !?

11/22/2013 23:25 MaxMilimeter#1
Hi,
ich hab hier nen kleinen Paketparser geschrieben, der in ein Spiel injeziert wird und jedes einzelne Paket untersucht. Diese Funktion wird direkt beim Empfangen genutzt, somit sorgts für ne kleiner Verzögerung im Clienten.

Wie löse ich dieses Problem? Wie gebe ich ALLE Pakete während des Spielens an nur EINEN Thread weiter der die dann entsprechend parsed?
Quasi wie bei einer Funktion, aber ohne dass diese zwischen Empfang an der DLL und Empfang am Clienten (was ja verzögert wird durch meinen Eingriff) steht.

MfG,
Max
11/23/2013 00:15 Padmak#2
Normalerweise hätte ich dir empfohlen die eingehenden Packets einfach zu kopieren und von einem Parallel-Thread verarbeiten zu lassen. Ich versteh nicht ganz was du mit "nur EINEN Thread" meinst, gehe aber davon aus dass du keinen extra Thread haben willst.

Dir wird nichts anderes übrig bleiben als deinen Code zu optimieren, wie viel is'n das wenn der Client dadurch verzögert wird?

Padmak
11/23/2013 08:51 MaxMilimeter#3
Eigentlich nicht so viel, es sind aber wohl viele Pakete die da empfangen werden, deshalb kommts zu der Verzögerung.
Ich möchte genau einen einzigen Thread laufen haben, der meine Pakete parsed, geht das?

Es kommen mehrere Pakete die Sekunde, wie übergeb ich die alle meinem Thread?

Danke im Voraus,
Max
11/23/2013 10:17 +Yazzn#4
Normalerweise sollten ein paar Pakete die Sekunde flott geparsed sein und keine Lags erzeugen. Hast du als Debug oder Release kompiliert? Ansonsten lad uns mal deinen Code hoch.
11/23/2013 11:08 [uLow]NTX?!#5
Quote:
Originally Posted by Peter File View Post
Normalerweise sollten ein paar Pakete die Sekunde flott geparsed sein und keine Lags erzeugen. Hast du als Debug oder Release kompiliert? Ansonsten lad uns mal deinen Code hoch.
stimmt, aber wenn man bedenkt vieviele packets reinkommen...
und vllt pro packet 1ms verzögerung dann bei M2 sind das 1400 Packets bis man IG ist.

Egal ob schrott oder nicht.
11/23/2013 13:57 MaxMilimeter#6
Lag nicht am Code, sondern daran, dass ich es als Debug statt Release kompiliert hatte. Damit war noch ein Fehler im Code verbunden, der dies wohl auslöst. Nun läuft alles Flott :)
Danke an Peter File für den entscheidenen Tipp !