Сигнал в синлтон в многопоточом варианте |
Здравствуйте, гость ( Вход | Регистрация )
Сигнал в синлтон в многопоточом варианте |
Abesh |
18.4.2011, 17:30
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 13 Регистрация: 4.6.2010 Пользователь №: 1780 Спасибо сказали: 2 раз(а) Репутация: 0 |
Читал, все что до чего могли добраться руки, но не помогает (если, честно впервые применяю сигналы\слоты в многопоточности)
читал доку, http://habrahabr.ru/blogs/qt_software/115835/ и оригинал, и еще сверху. Есть синглтон (TT600Controller) есть класс, наследуемый от Qthread c вот таким вот run-ом:
Есть еще простенький класс, наследуемый от QObject c вот такими методом:
Проблема заключается в том, что слот не вызывается. В указанных статьях что-то говориться про Q_INVOKABLE, но не совсем вкурил как его юзать, тупое копирование доки по этому макросу не спасают ситуацию Да, вариант с moveToThread вообще не вариант |
|
|
Гость_Гость_* |
19.4.2011, 13:32
Сообщение
#2
|
Гости |
М-да, надо чаще смотреть в консоль приложения. Выяснилось, что-то в moc не зарегистрированы "ссылочные" типы, т.е (что-то QString&) и если все в одном потоке все нормально, то при копировании в очередь событий, как и обещают тролли, возникают проблемы. При попытке зарегистрировать подобные типы, возникают какие-то ошибки компиляции, с которыми я не стал пока разбираться, а просто убрал все передачи по ссылкам .
|
|
|
wiz29 |
19.4.2011, 14:28
Сообщение
#3
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
между потоками лучше ссылки не передавать, особенно на объекты библиотеки.
|
|
|
Abesh |
19.4.2011, 15:53
Сообщение
#4
|
Студент Группа: Новичок Сообщений: 13 Регистрация: 4.6.2010 Пользователь №: 1780 Спасибо сказали: 2 раз(а) Репутация: 0 |
Ну Qstring это не объект библотеки, а контейнер.
Но иногда приходиться, передавать по ссылкам или указателям, из-за стоимости копирования, гораздо дешевле бывает залочить поток. |
|
|
Текстовая версия | Сейчас: 27.12.2024, 15:56 |