Russian Qt Forum
Ноябрь 26, 2024, 16:25
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Как испустить одиночный сигнал не соединяя sender-receiver ?
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как испустить одиночный сигнал не соединяя sender-receiver ? (Прочитано 10641 раз)
niXman
Гость
Как испустить одиночный сигнал не соединяя sender-receiver ?
«
:
Ноябрь 30, 2009, 04:26 »
Привет.
Как можно это сделать?
Есть сложная сеть соединений. Связи в которой создаются динамически, для единственной "вспышки". Так вот, на соединение сигналов и слотов, затрачивается много времени. Но, так как жизнь каждого соединения менее секунды, интересует, можно ли их не соединять? Возможно есть какой-то не столь ресурсоемкий способ?
Спасибо за внимание.
Записан
spectre71
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #1 :
Ноябрь 30, 2009, 10:48 »
Цитата: niXman от Ноябрь 30, 2009, 04:26
Привет.
Как можно это сделать?
Есть сложная сеть соединений. Связи в которой создаются динамически, для единственной "вспышки". Так вот, на соединение сигналов и слотов, затрачивается много времени. Но, так как жизнь каждого соединения менее секунды, интересует, можно ли их не соединять? Возможно есть какой-то не столь ресурсоемкий способ?
Спасибо за внимание.
В общем случае оптимизировать не получится.
Необходимо знать ограничения задачи.
Опиши подробнее.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #2 :
Ноябрь 30, 2009, 11:43 »
Интересно но нужны подробности. Если "менее секунды" - то проблемы нет, слот/сигнал подходит. Если "менее миллисекунды" - тогда (возможно) это проблема
Записан
spectre71
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #3 :
Ноябрь 30, 2009, 11:54 »
Цитата: Igors от Ноябрь 30, 2009, 11:43
Интересно но нужны подробности. Если "менее секунды" - то проблемы нет, слот/сигнал подходит. Если "менее миллисекунды" - тогда (возможно) это проблема
Не совсем правильно. Говорилось о времени жизни одного соединения, но ничего о частоте соединений.
Например новое соединение будет происходить раз в миллисикунду и существовать в среднем секунду.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #4 :
Ноябрь 30, 2009, 14:14 »
тему было бы корректнее назвать "как передать сигнал...", так как послать его можно вообще ни с чем не соединяя.
Записан
Юра.
BRE
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #5 :
Ноябрь 30, 2009, 14:20 »
Цитата: lit-uriy от Ноябрь 30, 2009, 14:14
тему было бы корректнее назвать "как передать сигнал...", так как послать его можно вообще ни с чем не соединяя.
На ум приходит bool QMetaObject::invokeMethod
Записан
niXman
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #6 :
Ноябрь 30, 2009, 14:27 »
Ребята, это не обыкновенная нейронная сеть. Соединения устанавливаются перед "вспышкой", т.е. организация. Вот на этот этап уходит много времени. Кол-во нейронов, колеблется от 128к до 1024к. Сеть отрабатывает быстрее чем время на организацию.
Отсюда и мысль, что на соединение тратиться больше ресурсов чем на работу, значит нужно искать менее ресурсоемкий подход.
Записан
spectre71
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #7 :
Ноябрь 30, 2009, 14:32 »
Цитата: niXman от Ноябрь 30, 2009, 14:27
Ребята, это не обыкновенная нейронная сеть. Соединения устанавливаются перед "вспышкой", т.е. организация. Вот на этот этап уходит много времени. Кол-во нейронов, колеблется от 128к до 1024к. Сеть отрабатывает быстрее чем время на организацию.
Отсюда и мысль, что на соединение тратиться больше ресурсов чем на работу, значит нужно искать менее ресурсоемкий подход.
А зачем тебе в данной задаче использовать QT механизм сигнал/слот? В данном случае это очень плохое решение.
Записан
niXman
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #8 :
Ноябрь 30, 2009, 14:38 »
Цитировать
На ум приходит bool QMetaObject::invokeMethod
Вот. То что нужно
Цитировать
А зачем тебе в данной задаче использовать QT механизм сигнал/слот?
Так я реализовал задачу. Говорю же: необыкновенная нейронная сеть.
Цитировать
В данном случае это очень плохое решение.
По чему
очень
плохое?
Записан
BRE
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #9 :
Ноябрь 30, 2009, 14:41 »
Цитата: niXman от Ноябрь 30, 2009, 14:38
По чему
очень
плохое?
Потому, что нужно много времени на все коннекты.
Можно хранить указатель на объект/указатель на метод и дергать его на прямую. Можно задействовать boost, там есть и bind и function.
Записан
niXman
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #10 :
Ноябрь 30, 2009, 14:44 »
Цитировать
Потому, что нужно много времени на все коннекты.
сам знаю.
Цитировать
Можно хранить указатель на объект/указатель на метод и дергать его на прямую. Можно задействовать boost, там есть и bind и function.
Не потокобезопасно! А синхронизация такого кол-ва соединений с параллельной сетью, съест еще больше ресурсов. И моего моцга
Вопрос решен.
Всем огромное спасибо!
Записан
BRE
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #11 :
Ноябрь 30, 2009, 14:50 »
Так там еще многопоточность.
Не забывай, что вызов слота в другом потоке будет происходить через очередь сообщений этого потока, т.е. дополнительные задержки + порядок вызова слотов из разных потоков определить будет не легко.
Записан
niXman
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #12 :
Ноябрь 30, 2009, 14:56 »
Цитировать
Не забывай, что вызов слота в другом потоке будет происходить через очередь сообщений этого потока, т.е. дополнительные задержки + порядок вызова слотов из разных потоков определить будет не легко.
Среди нейронов нет ГУИ объектов. Значит и сигналов кроме мойх нет.
При том, есть флаг Qt::DirectConnection
Записан
BRE
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #13 :
Ноябрь 30, 2009, 14:58 »
Цитата: niXman от Ноябрь 30, 2009, 14:56
Среди нейронов нет ГУИ объектов. Значит и сигналов кроме мойх нет.
При том, есть флаг Qt::DirectConnection
Попробуй, но могут быть (и я думаю будут) глюки.
Записан
niXman
Гость
Re: Как испустить одиночный сигнал не соединяя sender-receiver ?
«
Ответ #14 :
Ноябрь 30, 2009, 15:03 »
Цитировать
Попробуй, но могут быть (и я думаю будут) глюки.
Так нет же, работает. Просто долго организовывалась.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...