wenze schrieb:
ich bin platt 👍 . Danke Deine Vorlage muss ich mir, ehrlich gesagt, erst einmal eine Weile ansehen um sie zu verstehen.
😬 Bei Fragen, fragen. ☺
Race Conditions Rechnung tragen musste, die auftreten können, wenn zwei Jobs gleichzeitig terminieren oder schon wieder terminiert sind während start_job noch läuft
Das war gerade das Thema, wo ich nicht so richtig weiterwusste.
Als Lösung dafür schaut wait_job
immer nach, ob auch alle registrierten Jobs noch leben. Wenn einer davon fertig ist, dann kann man direkt schon weiter machen. Der wait
am Ende wird nur dann aufgerufen, wenn alle Jobs leben. Auch da gibt es noch eine kleine Möglichkeit für eine Race-Condition.
Im Moment habe ich ein Skript, welches mir ein Skript erstellt, in dem die Jobs (Programmaufrufe mit Parametern) stehen, was ich bisher zu Schluss gestartet habe, und
dieses quasi seriell die Jobs seriell startete.
Lese alle ISO-Files aus einem Verzeichnis und erstelle mir daraus ein Skript mit dem Programmaufruf
Starte das 2. Skript mit den Programmaufrufen
Sind Deine Jobs denn eher IO bound oder CPU bound? Im ersteren Fall lohnt sich die ganze Mühe gar nicht und ich würde einfach die ISOs sequentiell verarbeiten.
Ich bin versucht, jetzt das mit deinen Skript ohne das Zwischenskript zu verknüpfen, hat aber ein Nachteil, wenn ich mal unterbrechen muss oder was abgebrochen ist und ich hinterher wieder neu aufsetzen muss.
Das hat Du aber auch mit Deiner Variante. Um das regeln zu können, musst Du die Queue im Dateisystem speichern und immer ein Element austragen, wenn ein Job erfolgreich beendet ist.
Oder ich bastel noch mehr Logik rein.
Das wirst Du brauchen, wenn Du so etwas wie eine Wiederaufnahme möchtest. Für so persistente Queues gibt es schon reichlich. Ich kenne aber im Moment nix, was so direkt in einem Shell-Skript zu nutzen wäre.