Я использую потоки в программе, которая загружает файлы через sftp. Количество файлов, которые могут быть загружены, потенциально может быть очень большим или очень маленьким. Я хотел бы иметь 5 или менее одновременных загрузок, и если их больше, пусть они подождут. Насколько я понимаю, обычно для этого используется условная переменная, но мне кажется, что это позволяет использовать только 1 поток за раз.
cv = ConditionVariable.new
t2 = Thread.new {
mutex.synchronize {
cv.wait(mutex)
upload(file)
cv.signal
}
}
Я думаю, что это должно сказать ему подождать, пока резюме будет доступно, и выпустить его, когда закончите. Мой вопрос: как я могу сделать это, позволяя более 1 за раз, при этом ограничивая количество?
редактировать: я использую Ruby 1.8.7 в Windows из установщика в 1 клик