Russian Qt Forum
Ноябрь 23, 2024, 04:08
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Разное
>
Говорилка
>
Порядок вызова слотов при испускании сигнала.
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Порядок вызова слотов при испускании сигнала. (Прочитано 7202 раз)
Sancho_s_rancho
Гость
Порядок вызова слотов при испускании сигнала.
«
:
Май 30, 2011, 09:03 »
Листал я на досуге документацию по qt 4.7, и наткнулся ненароком на такой абзац
Цитировать
If several slots are connected to one signal, the slots will be executed one after the other, in the order they have been connected, when the signal is emitted.
"Фига" - подумал я. Вроде ж он не определен, этот порядок. Открыл документацию к 4.5:
Цитировать
If several slots are connected to one signal, the slots will be executed one after the other, in an arbitrary order, when the signal is emitted.
Зачем к концу жизненного цикла четвертой ветки они этот порядок установили?
Записан
SASA
Гость
Re: Порядок вызова слотов при испускании сигнала.
«
Ответ #1 :
Май 30, 2011, 09:45 »
Я думаю порядок был всегда. Но пользоваться этим порядком не есть правильно. Вот они и писали, что в случайном.
А теперь признались
Записан
Akon
Гость
Re: Порядок вызова слотов при испускании сигнала.
«
Ответ #2 :
Май 30, 2011, 09:52 »
Чтоб уменьшить энтропию продукта
Записан
Sancho_s_rancho
Гость
Re: Порядок вызова слотов при испускании сигнала.
«
Ответ #3 :
Май 30, 2011, 10:03 »
Цитата: Akon от Май 30, 2011, 09:52
Чтоб уменьшить энтропию продукта
Разработчик использовал версию 4.7, а дистроклепатели более раннюю. Если какого-то метода нет в ранней версии, то программа просто не соберется. С этим же подходом все может успешно собраться и запустится и наделать бед в рантайме.
Да, конечно, разработчик может жирный варнинг в pro добавить. Но мы же знаем этих разработчиков
. Да и никто не гарантирует, что он начинал изучение Qt c с дремучих версий и в курсе что надо кого-то о чем-то предупреждать.
«
Последнее редактирование: Май 30, 2011, 10:10 от Sancho_s_rancho
»
Записан
Sancho_s_rancho
Гость
Re: Порядок вызова слотов при испускании сигнала.
«
Ответ #4 :
Май 30, 2011, 10:09 »
Цитата: SASA от Май 30, 2011, 09:45
Я думаю порядок был всегда. Но пользоваться этим порядком не есть правильно. Вот они и писали, что в случайном.
А теперь признались
Общество анонимных Qt-шников.
В течение пяти лет я и мои коллеги девелоперы Qt знали и использовали порядок connect для установления порядка вызова слотов. Мы не рассказывали об этом никому. Обманывали своих жен, детей и даже пользователей платных версий Qt. Но мы не может более держать это в тайне. Пусть все знают эту горькую правду - этот порядок есть.
Записан
Akon
Гость
Re: Порядок вызова слотов при испускании сигнала.
«
Ответ #5 :
Май 30, 2011, 15:04 »
Цитировать
Разработчик использовал версию 4.7, а дистроклепатели более раннюю. Если какого-то метода нет в ранней версии, то программа просто не соберется. С этим же подходом все может успешно собраться и запустится и наделать бед в рантайме.
Скорее наоборот, если бы полагались на порядок, а в новой версии его бы не стало.
В общем случае в многопоточной среде толку от порядка нет, поскольку без специальных ухищрений вы не сможете выполнить соединения сигнал-слот в определенном порядке.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Порядок вызова слотов при испускании сигнала.
«
Ответ #6 :
Июнь 01, 2011, 13:57 »
Цитировать
Изучив немного посты в mailist'e trolltech я вынесл для себя следующую мысль. На данный момент порядок вызовов слотов можно предсказать, однако разработчики не дают гарантии того, что в новых версиях библиотеки порядок вызовов не изменится. Может быть вариант, когда вызовы будут сортироваться для достижения максимальной производительности. Поэтому, если нужен строгий порядок вызовов слотов...
тыц
Записан
Юра.
LisandreL
Птица говорун
Offline
Сообщений: 984
Надо улыбаться
Re: Порядок вызова слотов при испускании сигнала.
«
Ответ #7 :
Июнь 01, 2011, 14:30 »
Цитата: Sancho_s_rancho от Май 30, 2011, 10:09
В течение пяти лет я и мои коллеги девелоперы Qt знали и использовали порядок connect для установления порядка вызова слотов. Мы не рассказывали об этом никому. Обманывали своих жен, детей и даже пользователей платных версий Qt. Но мы не может более держать это в тайне. Пусть все знают эту горькую правду - этот порядок есть.
Обычно когда
что-то
задокументировано как «undefined», но разработчики «знали и использовали», заканчивается очень трудно отлавливаемыми багами, когда
это
всё же поменяется или просто перейдёте на другой компилятор, где
это
работает не так:
поучительная история
.
Записан
ритт
Гость
Re: Порядок вызова слотов при испускании сигнала.
«
Ответ #8 :
Июнь 05, 2011, 17:38 »
о, да, поучительная история о том, как торвальдз даёт мастер-класс толстого троллинга...
если перейдёте на другой компилятор, то вызов слотов там будет точно такой же.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...