Exec threads etc... |
Здравствуйте, гость ( Вход | Регистрация )
Exec threads etc... |
Гость_me_* |
17.2.2009, 23:03
Сообщение
#1
|
Гости |
Доброго времени суток..
Не так давно начал разбираться с взаимодействием потоков в qt и осознал что оч мощно запутался. Есть задача: написать многопотоный ftp клиент который парсит файлик с заданиями и закачивает с разных ftp ресурсов файлы. Многопоточный просто для того чтобы самому в этом хорошенько разобраться. Решил организовать это следующим образом на каждое задание создаётся поток и далее вся работа через QFtp. Насколько я понял QFtp асинхронный, а так как мне требуется помимо непосредственно работы с ftp в этом же потоке обрабатывать некоторые действия со скачанными файлами то требуется вынести это в соотвествующие слоты. Не понятно мне стало вот что: - насколько я понимаю слоты прикреплённые к соотвествующим сигналам из Qftp НЕ будет выполнятся до тех пор пока не будет вызван exec в потоке? Но тогда я так понима.ю мне придётся как минимум обращаться к потоку из главного потока дважды. Первый раз на старт потока а второй на запуск задания (просто слот с перечнем комманд на коннект и на скачку) - получается что всю работу с ftp надо будет полностью выносить в отдельные слоты, что видится мне несколько грамоздким. Вообщем требуется квалифицированная помощь))) з.ы. Заранее хочу сказать, что листал книги по qt, читал документацию, но разобрался не во всём и эти моменты для меня туманны, так что просьба к великому гуглу не отсылать))) з.з.ы Какой-нибудь простенький пример будет оч кстати.. ток главный смысл в том что программа будет автоматизированна и без участие человека и без гуи... так что явный инициатор QFtp c точки зрения запуска заданий отсуствует.. Заранее спасибо! |
|
|
ViGOur |
17.2.2009, 23:36
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Работу с FTP не нужно выносить в отдельные слоты.
Давай попробуем разделить изучение того, что тебе нужно на шаги: 1. Для лучшего понимания почитай Сигналы и слоты () (если еще не читал) 2. Глянь пример работы с ftp: FTP Example. А за одно и класс QFtp, для получения файла нужно использовать: int QFtp::get ( const QString & file, QIODevice * dev = 0, TransferType type = Binary ). По данному примеру и сделай свою реализацию, пускай и консольную, GUI в примере чисто для визуализации. 3. Прочитай Поддержка потоков в Qt. А теперь, если ты на отлично понял 1, 2, 3 пункты, попробуй 'нарисовать' более ясную картину твоей реализации. Потому как у тебя явно полная каша в голове. |
|
|
Текстовая версия | Сейчас: 29.11.2024, 21:22 |