Über Nacht einem Prozess maximale Leistung bieten

Naja, die eigentliche Frage die sich stellt ist, wie verhinderst du, dass die beiden Dateien nicht ein und die selbe Datei sind? Ein einfaches If reicht definitiv nicht aus.
 
Naja, die eigentliche Frage die sich stellt ist, wie verhinderst du, dass die beiden Dateien nicht ein und die selbe Datei sind? Ein einfaches If reicht definitiv nicht aus.

Das hatte ich vor, in dem Programm zu verhindern, welches die Dateien ausliest und den Pfad zurück gibt.

Die Pfad-Zeilen werden alle in einem Array gespeichert.
Ich lasse dann die zwei folgenden Pfade heraus lesen und prüfe, ob die gleich sind. Wenn nein, werden sie weiter über ein kleines Batch-Programm an FormatFactory geleitet, wenn sie gleich sind, dann wird der zweite durch einen weiteren Pfad ersetzt. Wenn die dann ungleich sind, läuft es normal weiter.

Eine andere Möglichkeit wäre auch, das Feld, indem alle Pfade gespeichert sind, vorher auf gleiche Pfade durchsuchen zu lassen und mehrfach vorkommende Pfade auf eins zu reduzieren.
Aber auch in diesem Fall beruht das auf einer einfachen If-Abfrage:
Code:
if (Pfad1 == Pfad2)
     // Wenn sie gleich sind
else
     // Wenn sie nicht gleich sind
 
Klappt vermutlich sogar, ist aber trotzdem ein grober Fehler. Das nennt man Racing Conditions. Diese Abfrage stellt nicht 100%ig sicher, dass die Pfade unterschiedlich sind. Es wird aber in den meisten Fällen trotzdem klappen, da genug Zeit zwischen den einzelnen Durchläufen, in denen die Abfragen passieren, vergeht.

Das muss aber nicht immer so sein und kann zu schweren (kaum nachvollziehbaren) Fehlern oder in anderen Fällen sogar zu Deadlocks führen. Bei deinem jetztigen Problem sind aber wohl eher Fehler statt Deadlocks wahrscheinlich
 
Wahrscheinlich ist die Threadverteilung einfacher, wenn man weiss, wie der Thread an sich arbeitet. Denn die Verteilung wird ja wie erwähnt vom Mutterprozess gesteuert. Da böte sich eine Datenbank an, wurde wohl auch Anfangs mal erwähnt, sequentielle Dateiermittlung und Verteilung wäre auch machbar.

tobim, die meisten Konverter lesen die Einstellungen nur einmal ein, aber wie du richtig erkannt hast, muss der Konverter dazu mehrfach gestartet werden dürfen, ob der nun sein eigenes mutex prüft, muss Paladin selbst herausfinden - sollte aber möglich sein, wenn ich seine Worte richtig behalten habe.

Ist bekannt, was gewandelt werden soll? Dann wäre eine Reduktion auf einen minimalistischen Konverter wohl idealer als ein komplexer mit Bedieneroberfläche, ffmpeg wäre so ein Minimalist.

gd.
 
Deadlocks wollte ich verhindern, indem das Programm maximal zwei Prozesse zulässt und solange noch einer läuft, wird er nicht fort fahren.
Wenn der Prozess zu lange braucht, wird er abgebrochen, der abgebrochene Prozess wird protokolliert und abgespeichert. So will ich verhindern, dass sich das Programm fest fährt. (Wenn ich den Begriff Deadlock hier falsch verstanden habe, dann tuts mir leid^^)


Nach einer groben Wikipedia-Recherche habe ich Racing Conditions so verstanden:
Wenn ein String mit einem anderen String verglichen wird, kann es passieren, dass in einzelnen Fällen ein vorheriger String verwendet wird, was dann zu einem Fehler führt. So habe ich das jetzt verstanden, da ich solch ein Problem bereits bei Batch hatte und einfach keine Idee, was der Fehler sein könnte.
Um das komplett zu verstehen, müsste ich dann vermutlich selber in den zweifelhaften Genuss von einem solchen Problem in C# kommen^^

Aber wenn ich mit der groben Beschreibung richtig liege, kann man das nicht so ändern, dass zwischen den Kontroll-Abfragen ein gewisser Zeitraum liegt, indem das Programm sich im Leerlauf befindet?
Oder, wenn ich über den Garbage Collection die vorherige Instanz in der Abfrage vollständig lösche, allerdings müsste ich mich dann erst damit auseinander setzen, wie ich den direkt ansprechen kann, besonders da ich mir nicht einmal sicher bin, ob das überhaupt so direkt geht^^


@ditto:
Ja, ist es. Ich will Musik-Dateien, die bevorzugter Weise in mp3 vorhanden sind (muss aber nicht sein, kann auch wmv, oder ein anderes sein) im selben Dateiformat behalten. Ich will deren Qualität auf ein bestimmtes Maximum reduzieren. Das habe ich vor, da (nach den Informationen, die bei der Bedienoberfläche im iTunes angezeigt werden, wenn der iPot angesteckt ist) der MP3-Player selber gar nicht in der Lage ist, die volle Qualität abzuspielen und diese überflüssigen Informationen dann unnütz Speicherplatz füllt.
 
Oben