createUnit gleichzeitig in verschiedenen Threads

  • Hallo zusammen,
    In meinem Script initialisiere ich zu Beginn erstmal alle Einheiten, die ich in meiner Mission brauche. Dazu starte ich am Anfang verschiedene Threads die ihren jeweiligne Teil der Mission aufbauen und eben auch Einheiten spawnen.


    Jetzt ist es aber so, dass nur die Einheiten gespawnt werden, die vom letzten gestarteten Thread gespawnt werden, deshalb meine Frage ob es ein Problem ist den createUnit-Befehl gleichzeitig in mehreren Threads zu benutzen?


    Und wenn ja, dann noch die Frage ob ArmA nur eine Instanz einer Funktion aus CfgFunctions zulässt, also bei gleichzeitigem benutzen der selben Funktion den vorherigen Aufruf sozusagen canceled und nur den neuesten bearbeitet? (Ich erstelle meine Einheiten immer über eine Funktion und nicht direkt mit "createUnit")
    Denn wenn ich zwischen den Scripten, die Einheiten spawnen einen sleep setzte, dann funktioniert alles gut aber ich hab keinen Schimmer warum...


    MFG Raven

  • In Arma gibt es keine Threads. Da passiert nix parallel.


    Nein, Funktionen kannst du jederzeit aufrufen. Funktionen sind in Arma nur Variablen die Code enthalten.


    Der Fehler liegt mir Sicherheit woanders. Ruf die Funktionen einfach hintereinander auf statt in verschiedenen spawns.

  • In Arma gibt es keine Threads. Da passiert nix parallel.

    Oha... Und ich dachte immer mit "execVM" und "spawn" könnte ich Sachen parallel laufen lassen...



    Ruf die Funktionen einfach hintereinander auf statt in verschiedenen spawns.

    Die Sache ist nur dass das keine Funktionen sind sondern nur normale Scripts, die ich nur einmal am Anfang brauche und deswegen nicht in eine Funktion kompiliere... Und der Scriptaufruf passiert schon nacheinander, also wenn in ArmA nichts parallel abläugt dann müsste das schon alles der Reihe nach abgearbeitet werden...


    Dann versteh ich aber erst recht nicht warum es funktioniert wenn ich einen sleep zwischen die zwei Scripte setze... ?(

  • Oha... Und ich dachte immer mit "execVM" und "spawn" könnte ich Sachen parallel laufen lassen...

    Nicht wirklich. Du überlässt nur dem Scheduler in welcher Reihenfolge die "SCRIPT"s ausgeführt werden.


    Vielleicht kollidieren in deinem Skript globale Variablen? Dann würde die Mission auch nicht zuverlässig laufen, da, besonders im MP, die resultierende Reihenfolge der "SCRIPT"-Abarbeitung des Schedulers maschinen- und sozusagen "wetterabhängig" ist.

  • Vielleicht kollidieren in deinem Skript globale Variablen?

    Also in diesen Scripts lese ich nur globale Variablen, aber ich schreibe keinen Wert in sie...


    Hier mal die zwei Skripte:


    Und hier die Funktion, die die Eiheiten spawnt:

  • Lieber Raven,


    die erste Script wird wahrscheinlich nicht ausgeführt weil:

    C
    1. _group = createGroup SIDE_ATTACKER; //Hier können nur Seiten angegeben werden z.B east,west


    Im zweiten Script das gleiche mit createGroup und:


    C
    1. _pos = getMarkerPos "DEFENDER_RESPAWN_MARKER"; // Da fehlten die Anführungszeichen.

    Ich hoffe dir damit geholfen zu haben.




    MfG Lucke

  • SIDE_DEFENDER und DEFENDER_RESPAWN_MARKER ...

    Das sind globale Variablen, die in der init definiert werden...



    ch sehe da weder "spawn" noch "execVM".

    Ja mein Fehler... Hab vergessen die init mit anzuhängen...