Paralleles Abarbeiten -> 2e exe?

  • Hey Leute...

    Ich schreibe gerade ein Spiel, wo der host ständig kontrolliert, ob jemand beitritt und wenn ja, KommunikationsDaten (Handshake) zu diesem Sendet....

    Dann habe ich aber noch das Hauptspiel, dass die ganze zeit Parallel läuft...
    Da eine Parallele abarbeitung nicht möglich ist und ich angst habe, dass mein Programm einfach zu langsam wird (tcp) bin ich auf die idee mit ner 2en exe gekommen...

    ist meine angst berechtigt oder gibt es einen anderen weg...?


    Danke für eure antworten.! :rock:

    Einmal editiert, zuletzt von Mr_gitarre (23. Oktober 2010 um 19:42)

  • Warum ist eine parallel Abarbeitung nicht möglich? Kannst doch ohne Probleme die Prüfung auf neue Clients einbauen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • wie meinen...?

    Edit: Na mein Problem ist, dass doch AutoIT (Relativ) langsam ist...
    Wenn ich AdLibRegister alle 10ms die Clients checke, ob nicht ein Handshake gemacht werden muss und nebenbei Diverse Daten Verarbeiten und Senden muss ist es doch besser, wenn etwas Parallel arbeitet... (Also eine 2e exe) ... ODER NICHT...?

  • ok, das überrascht mich...
    Denn die daten, die verarbeitet werden, sind ein bisschen komplexer.. dennoch meint ihr, dass ich keine 2e Exe brauche, weil autoit das schafft...

    ...OK: dann reicht mir das..:)

  • Wenn du Sachen parallel laufen lassen willst brauchst du bei AutoIt 2 Exen. AutoIt ist nämlich NICHT multithreading fähig.
    Sen: Das is zu 100% nicht AutoIt, dass die Muasklicks ausführt ;)

  • Sen: ich hab auch mal bei facebook so en hack probiert...
    Du musst so schnell wies geht das ABC eintippen, aber schneller als 8sek kam ich mit autoit nicht...

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]
  • Zitat

    Wenn du Sachen parallel laufen lassen willst brauchst du bei AutoIt 2 Exen. AutoIt ist nämlich NICHT multithreading fähig.
    Sen: Das is zu 100% nicht AutoIt, dass die Muasklicks ausführt


    Du kannst aber trotzdem Funcs zum abfragen laufen haben und zwischendurch mit AdLibs die Handshkes abfangen o;
    Und doch, es ist AutoIt. (Auch wenn Dll's etc im Spiel sind. :P)

    Zitat

    Sen: ich hab auch mal bei facebook so en hack probiert...
    Du musst so schnell wies geht das ABC eintippen, aber schneller als 8sek kam ich mit autoit nicht...


    8 sek? o_O
    Moment ich teste mal eben was, nur mit normlem AutoIt Kram.
    Ich editier hier gleich.

  • So, zu dem 8 sek Ding:

    [autoit]

    #include <Timers.au3>
    Opt("SendKeyDelay", 0)
    Opt("SendKeyDownDelay", 0)

    [/autoit][autoit][/autoit][autoit]

    ;Timer
    $Timer = _Timer_Init()

    [/autoit][autoit][/autoit][autoit]

    ;Eigenliche Funktion
    $String = StringSplit("ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", "")
    For $i = 1 To $String[0]
    Send($String[$i])
    Next

    [/autoit][autoit][/autoit][autoit]

    ;ConsoleWrite
    ConsoleWrite("Das brauchte jetzt: " & _Timer_Diff($Timer) / 1000 & " Sekunden" & @CRLF)

    [/autoit]

    Ergebnis bei mir:

    Zitat

    Das brauchte jetzt: 0.00142892741954634 Sekunden

    Ineluki
    Größenteils, stimmt.
    Aber es ist halt immernoch ein AutoIt Script! :P

  • Streng genommen müsstest du noch nichtmal das StringSplit mit einberechnen, denn das gehört ja nicht zum eigentlichen Senden des Alphabets :P

  • Dann halt gleich so :D

    [autoit]

    #include <Timers.au3>
    Opt("SendKeyDelay", 0)
    Opt("SendKeyDownDelay", 0)

    [/autoit][autoit][/autoit][autoit]

    ;Timer
    $Timer = _Timer_Init()
    $String = StringSplit("ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", "")

    [/autoit][autoit][/autoit][autoit]

    ;Eigenliche Funktion
    For $i = 1 To $String[0]
    Send($String[$i])
    Next
    $Res = _Timer_Diff($Timer)

    [/autoit][autoit][/autoit][autoit]

    ;ConsoleWrite
    ConsoleWrite("Das brauchte jetzt: " & $Res / 1000 & " Sekunden" & @CRLF)
    ConsoleWrite("Pro Zeichen: " & ($Res / 1000) / $String[0] & "Sekunden" & @CRLF)

    [/autoit]
  • oder warns 0.8?
    Is schon länger her^^
    Könnt aber auch was anderes gewesen sein...Hab sowas öfter mit autoit gemacht :D
    z.B wie oben iwas mit Klicks in 10sek...
    Is schon was tolles :D

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]