Я думаю, что это, вероятно, ошибка.
Вероятно, runway_mutex
должен был защищать введение или удаление плоскостей в массив и из массива, тогда как мьютексы отдельных плоскостей должны были защищать данные в конкретной плоскости.
Но это довольно сложный шаблон, чтобы правильно понять, и, очевидно, вы определенно не будете удерживать runway_mutex
, пока вы манипулируете отдельными плоскостями, и не инициализируете мьютекс объекта внутри массив без удержания каких-либо блокировок.
Трудно сказать, не видя код, подобный коду, который добавляет плоскости в массив.