C Git-允许垃圾收集器并行运行吗?
我有一个线程C程序,它在主应用程序旁边的pthread中通过C Git-允许垃圾收集器并行运行吗?,c,git,garbage-collection,C,Git,Garbage Collection,我有一个线程C程序,它在主应用程序旁边的pthread中通过popen启动git gc。主线程启动其他git命令 除了通过git commit-m“msg”提交之外,大多数其他git命令都没有问题 由于某种原因,当它正在提交,然后另一个线程尝试并行运行垃圾收集器时,应用程序崩溃 但是,通过git-gc&在终端上同时执行git提交和git-gc&!git commit-m“msg”和似乎大部分时间都能工作,但有几次提交过程会退出,退出代码为128 也许这就是问题所在?如何确保垃圾收集器并行成功运行
popen
启动git gc
。主线程启动其他git命令
除了通过git commit-m“msg”
提交之外,大多数其他git命令都没有问题
由于某种原因,当它正在提交,然后另一个线程尝试并行运行垃圾收集器时,应用程序崩溃
但是,通过git-gc&在终端上同时执行git提交和git-gc&!git commit-m“msg”和
似乎大部分时间都能工作,但有几次提交过程会退出,退出代码为128
也许这就是问题所在?如何确保垃圾收集器并行成功运行?垃圾收集器应该并行运行吗
我也发现了这个邮件列表线程,但它似乎信息量不大:除非你做了很多git操作,比如
git提交--amend
或git rebase
或创建了很多对象,否则经常启动git gc
是没有用的。请看一下:
另一方面,当git gc
与另一个进程同时运行时,存在删除另一个进程正在使用但尚未创建引用的对象的风险。这可能只会导致其他进程失败,或者如果其他进程稍后添加对已删除对象的引用,则可能会损坏存储库
也许你不应该同时启动git gc
,而应该根据自己的需要调整它?
配置是用来完成的,特别是
gc.auto
为什么要运行git-gc
?@code向导因为我需要优化repo以便其他命令更快,我每30分钟运行一次。我不知道git的多线程功能,但是如果它只是gc命令,为什么不使用?gc的独占锁,所有其他操作的共享锁?我真的不知道与此有什么关系。另外请注意,如果在后台自动运行git gc
,则应将其作为git gc--auto
运行。这将设置通常的14天(或以其他方式配置)宽限期,以避免上述问题。