В информатике блокировка конвоя — это проблема производительности, которая может возникнуть при использовании блокировок для управления параллелизмом в многопоточном приложении.
Блокировочный конвой происходит, когда несколько потоков с одинаковым приоритетом неоднократно борются за одну и ту же блокировку. [1] [2] В отличие от ситуаций взаимоблокировки и блокировки в реальном времени потоки в блокировочном конвое продвигаются; однако каждый раз, когда поток пытается получить блокировку и терпит неудачу, он отказывается от остатка своего кванта планирования и принудительно переключает контекст. Накладные расходы на повторяющиеся переключения контекста и недоиспользование квантов планирования ухудшают общую производительность.
Блокировочные конвои часто возникают, когда примитивы управления параллелизмом, такие как блокировки, сериализуют доступ к часто используемому ресурсу, такому как куча памяти или пул потоков . Иногда их можно устранить, используя неблокирующие альтернативы, такие как алгоритмы без блокировки , или изменяя относительные приоритеты конкурирующих потоков.