Название: Общий вопрос о многопоточности. Отправлено: ksk- от Ноябрь 07, 2012, 21:09 Всем привет. Мой вопрос имеет крайне малое отношение непосредственно к Qt, но всё же я решил задать его здесь. Допустим, я решил создать некий менеджер загрузок, который будет загружать большое кол-во файлов с сервера. Каждый файл планируется загружать в отдельном потоке, процесс загрузки каждого файла будет отображаться в отдельном ProgressBar'е. Вопрос: сколько разумнее всего завести для этого потоков, и почему? Ведь, я полагаю, будет очень глупо для загрузки 100 файлов создавать 100 потоков.
Название: Re: Общий вопрос о многопоточности. Отправлено: Igors от Ноябрь 07, 2012, 21:33 Каждый файл планируется загружать в отдельном потоке, процесс загрузки каждого файла будет отображаться в отдельном ProgressBar'е. Вопрос: сколько разумнее всего завести для этого потоков, и почему? Ведь, я полагаю, будет очень глупо для загрузки 100 файлов создавать 100 потоков. Ну это столь же глупо как делать 100 ProgressBar'ов :). Оптимальное число ниток давно известно: число ядер (+ может быть) 1 (см idealThreadCount). РеализацияКод
Название: Re: Общий вопрос о многопоточности. Отправлено: Bepec от Ноябрь 08, 2012, 06:57 Видимо парень имел в виду менеджер загрузок, подобно download master'у или торренту.
Хм. Интересно. Тогда вопрос по теме - как реализован download master или торрент? Более 50 файлов загружать одновременно - легко делают. Название: Re: Общий вопрос о многопоточности. Отправлено: kuzulis от Ноябрь 08, 2012, 10:31 А если посмотреть исходники примера торрент качалки из Qt?
Название: Re: Общий вопрос о многопоточности. Отправлено: Bepec от Ноябрь 08, 2012, 10:49 Йо, а такая есть? *полез в пыльный каталог примеров Qt*
Спасибо за наводку. Название: Re: Общий вопрос о многопоточности. Отправлено: Igors от Ноябрь 08, 2012, 10:51 Код
Код Смысл впрочем тот же - заряжается контейнер задач на который натравливается бригада ниток. Структура элемента очевидна, должен знать откуда качать, куда писать и.т.п. Конечно вместо omp можно использовать concurrent (кому что нравится) А если посмотреть исходники примера торрент качалки из Qt? Ох уж эти готовые примеры :)Название: Re: Общий вопрос о многопоточности. Отправлено: ssoft от Ноябрь 09, 2012, 08:40 Очень легко можно организовать параллельную закачку файлов с помощью QtConcurent.
Рекомендую ознакомится. |