У меня есть проект, в котором много файлов, которые не управляются ASDF и скомпилированы вручную.Эти файлы полностью независимы, и возможность их параллельной компиляции казалась мне способом сокращения времени компиляции.Мой план состоял в том, чтобы скомпилировать эти файлы параллельно, а затем последовательно загрузить созданные файлы FASL.Но после того, как я распараллелил компиляцию, я увидел, что улучшение производительности было практически нулевым.Затем я пошел к источникам SBCL и обнаружил, что compile-file
принимает блокировку мира , которая по существу секвенирует компиляцию.
Мой вопрос: в чем причина того, что compile-file
берет эту блокировку?Хотя параллельная загрузка FASL действительно может привести к некоторым условиям гонки, мне показалось, что компиляция файлов Lisp должна быть независимой и распараллеливаемой.