/*
Алгоритм распараллеливания тестов с общей очередью. Запускается такое количество параллельных потоков,
сколько машин доступно для выполнения тестов, и далее из каждого потока происходит обращение к
синхронной функции, которая достает из очереди имя теста для выполнения. Если тестов для выполнения
больше нет, то возвращается пустое имя теста и поток завершает свою работу.
Минус данного подхода в том, что если какая-то машина не работает и сбоит, она очень быстро заберет все
тесты из очереди и завалит их. В целом, сборка завершится быстро, но процент выполненных успешно
тестов будет очень мал.
*/
Вот еще коммент с пояснением к функции