Ich habe ein Gewinde C-Programm, das git gc
über popen
in einem Pthread neben der Hauptanwendung startet. Der Hauptthread startet andere Git-Befehle.Git - darf der Garbage Collector parallel laufen?
Es gibt keine Probleme für die meisten anderen Git-Befehle, außer wenn ich über git commit -m "msg"
committe.
Aus irgendeinem Grund, während es Commit ist und dann der andere Thread versucht, den Garbage Collector parallel auszuführen, stürzt die Anwendung ab.
scheint jedoch über git gc &! git commit -m "msg" &
zugleich auf dem Terminal ein git commit und ein git gc tun die meiste Zeit zu arbeiten, aber ein paar Mal der Commit-Prozess beendet mit Exit-Code 128
Vielleicht ist das Problem? Wie stelle ich sicher, dass der Garbage Collector erfolgreich parallel ausgeführt wird? Soll der Garbage Collector parallel ausgeführt werden?
ich diese Mailing-Liste Thread auch gefunden, aber es scheint nicht zu informativ zu sein: https://dev.eclipse.org/mhonarc/lists/jgit-dev/msg02138.html
Warum starten Sie 'git gc'? – CodeWizard
@CodeWizard Da ich den Repo optimieren muss, damit die anderen Befehle schneller sind, führe ich alle 30 Minuten –
Ich weiß nicht über die Multithreading-Fähigkeiten von GIT, aber wenn es nur der GC-Befehl ist, warum nicht Sie Verwenden Sie eine [Lese-/Schreibsperre] (https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock)? Exklusive Sperre für GC, gemeinsame Sperre für alle anderen Operationen? – Aconcagua