![]() |
|
|
![]()
|
|
| ss |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
Доброго времени суток.
Пытаюсь распареллелить программу на примере http://habrahabr.ru/post/150274/ есть класс WorkerFilter который будет работать в потоке WorkerFilter
и класс фабрика которая буде порождать потоки Filter.h
Filter.cpp
создаю фабрику и запускаю Filter f; f.start(); она начинает работать. Создаются потоки Они работают. выдают сигнал emit finish() из void WorkerFilter::work() а вот вызов Filter::slotFinish() не срабатывает. В чем причина, подскажите? в Filter::slotFinish() должен настираться счетчик countFinish до количества выделенных потоков и выдать сигнал о завершении работыemit finish(); |
||||||
|
|||||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
попробуй при коннекте задать правильный ConnectionType. AutoConnection, выбираемый по умолчанию, не подходит.
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| ss |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
ничего. Все срабатывает нормально. Завершается без ошибок. Потоки заходят в WorkerFilter::work() а в Filter::slotFinish сигнал не проходит
может и его. Просто, с QtConcurrent еще не сталкивался.
пробовал Qt::BlockingQueuedConnection и Qt::QueuedConnection все равно не заходит Это сообщение отредактировал(а) ss - 12.10.2015, 21:50 |
||||||
|
|||||||
| Guinness |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: 2 Всего: 10 |
||||
|
||||
| ss |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
Guinness, спасибо за помощь.
что-то я вообще. Описал в конструкторе как локальную переменную. MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); Filter f; f.start(); } вынес объявление экземпляра класса f в параметр класса MainWindow и все заработало. Это сообщение отредактировал(а) ss - 13.10.2015, 21:06 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Filter нужно объявить полем класса MainWindow. В данном случае он уничтожается сразу после выполнения конструктора MainWindow.
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |