Глобальное состояние Libgit2 и безопасность потоков - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь пересмотреть нашу кодовую базу, которая, кажется, неправильно использует libgit2 (по крайней мере, TSAN сходит с ума от того, как мы ее используем).

Я понимаю, что большинство операций основаны на объектах (иначе, операции поверх репо локализованы для этого репо), но мне неясно, когда речь идет о глобальном состоянии и какие операции необходимо синхронизировать глобально.

Есть ли список функций, которые требуют глобальной синхронизации?

Кроме того, когда дело доходит до git_repository_open(), нужно ли мне следить за тем, чтобы только один путь удерживался только одним потоком? Т.е. мне нужно запретить нескольким потокам обращаться к одному репо?

...