![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
AcRis |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 15.5.2010 Пользователь №: 1717 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Пытаюсь написать многопоточное скачивание. Не могу понять принцип: что нужно засунуть в сам поток? что оставить снаружи (к примеру, QNetworkAccessManager?)? посему, если я создаю reply (QNetworkReply) в потоке, то он не испускате сигнала?
P.S. Прошу прощения за неточный вопрос, просто не могу уложить в голове, как что должно взаимодействовать. |
|
|
DIMEDROLL |
![]()
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: ![]() ![]() ![]() |
а ты уже написал однопоточное скачивание? как оно выглядит?
|
|
|
Алексей1153 |
![]()
Сообщение
#3
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Нужно запрашивать источник поблочно. Каждый поток должен знать, какой блок уже получен и запрашивать ещё не тронутые блоки. Потом данные собираются в кучку (вернее, изначально под данные нужно было место выделить и собирать эту мозаику)
|
|
|
Гость_Гость_AcRis_*_* |
![]()
Сообщение
#4
|
Гости ![]() |
Нужно запрашивать источник поблочно. Каждый поток должен знать, какой блок уже получен и запрашивать ещё не тронутые блоки. Потом данные собираются в кучку (вернее, изначально под данные нужно было место выделить и собирать эту мозаику) У меня есть алгоритм очереди с локерами и мьютексами. Выкладываю свой код, однако он чрезвычайно кривой, поэтому заранее извиняюсь. ![]() Проект компилится, только сохраняет пустой файл с корректным названием. Ссылка на код |
|
|
Алексей1153 |
![]()
Сообщение
#5
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
AcRis, нет смысла копаться в коде (тем более, что ты сам его кривым считаешь) - распиши алгоритм в человечьем языке, а потом напиши чистый код уже по алгоритму
![]() Мутексы вроде не нужны - процесс же один. А локеров в алгоритме нету (они есть в программе), поскольку локер по логике сидит в одной единственной функции, которая раздаёт задания и собирает уже принятые блоки Сообщение отредактировал Алексей1153 - 18.7.2010, 14:58 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 21.5.2025, 10:28 |