Russian Qt Forum
Ноябрь 01, 2024, 02:53
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Разное
>
Говорилка
>
Igors, это ты? :)
Страниц:
1
...
6
7
[
8
]
9
10
...
17
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Igors, это ты? :) (Прочитано 128622 раз)
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Igors, это ты? :)
«
Ответ #105 :
Сентябрь 03, 2018, 18:43 »
Цитата: Igors от Сентябрь 03, 2018, 17:52
А что, Вы умеете обновлять UI из
любой
нитки (а не только главной)? Расскажите как, я так не умею
Ну это просто Qt говно - вон, винапи же умеет.
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #106 :
Сентябрь 04, 2018, 03:18 »
Цитата: kuzulis от Сентябрь 03, 2018, 12:43
т.к. в не-Qt-шных тредах нет евент лупа. Иначе - ССЗБ, читай доку.
бинго!
закономерный вопрос:
а нафига треду нужен ещё какой то костыль в придачу
в виде ниразу не очевидного эвент лупа?
Цитата: kuzulis от Сентябрь 03, 2018, 12:43
PS: Можно все перевернуть с ног на голову, заявив, что, мол беру boost asio, и нифига не работает, т.к. там тоже есть луп/сервис (и его надо запускать),
а я не хочу его запускать, кочу юзать чтобы из QThread оно само работало. Мол, boost гавно, не работает в Qt.
дык, с асей то как раз таки проблем нет.
всмысле, она вполне себе дружит с тредами вообще.
наверное, это потому, что луп/сервис есть у аси, а не у тредов.
в тредах - чистая бизнес-логика.
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #107 :
Сентябрь 04, 2018, 03:21 »
Цитата: kuzulis от Сентябрь 03, 2018, 12:47
> "главная нитка" - это к тем, кто в многопоточку не умеет.
Многопоточка для тех, кто асинхронный ввод/вывод не осилил.
а асинхронный ввод/вывод конечно же реализуется не на многопоточке, да?
Цитата: kuzulis от Сентябрь 03, 2018, 12:47
Пачкование тредов это не есть хороший дизайн, это костыли. Так и тредов не хватит.
четкие поцаны юзают тред-пул.
и о боже! так реализуется асинхронка.
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #108 :
Сентябрь 04, 2018, 03:30 »
Цитата: Авварон от Сентябрь 03, 2018, 17:05
Цитата: _Bers от Сентябрь 03, 2018, 11:27
"главная нитка" - это к тем, кто в многопоточку не умеет.
Ну возьмите любую другую нитку - часто возникает задача передать управление в _определенный_ тред (обычно тот, который запускал задачу) без явного вызова wait().
лямбда-геттер жеж.
и пускай дергает, когда ему нужно из своего треда.
какие проблемы?
Код:
const auto getData = [](auto& src) { ... };
sample.setData(getData);
а вот пасти нужный тред,
что бы не дай боже, не дернуть что нибудь,
в каком нибудь другом - вот это уже не круто.
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #109 :
Сентябрь 04, 2018, 03:53 »
Цитата: Igors от Сентябрь 03, 2018, 17:52
А что, Вы умеете обновлять UI из
любой
нитки (а не только главной)? Расскажите как, я так не умею
а зачем вообще об этом думать? вот есть какая нибудь библиотека. CEGUI например.
я тупо запускаю инстанс прямо в main (или в любом треде, где захочу). и забываю про него.
когда кто нибудь жмакнет закрытие окна, ну или просто пришлет событие о том,
что нужно сворачивать лавочку, я тупо дергаю этому инстансу "сворачивайся".
и все. он сам отлипнет, и его тред завершится.
а как он там у себя внутри свои потроха обновляет - это уже его личные проблемы.
сами виджеты я могу создавать/двигать/разрушать в любом треде, где мне удобно.
и мне не нужно вообще думать о том, как и когда ядро обновит эти изменения.
проблемы CEGUI его пользователей не колышат.
Цитата: Igors от Сентябрь 03, 2018, 17:52
Речь идет о простейшем "выносе длинной операции в поток"(чтоб UI не замерзал) который здесь делают все кому не лень. Потому что - да, на Qt это легко и приятно. А вот как на std -хз.
делать гуй легко и приятно на любом высокоразвитом гуи-фреймворке.
а вот std к гую вообще не имеет никакого отношения.
Цитата: Igors от Сентябрь 03, 2018, 17:52
Ни о каком тамошнем механизме обмена инфой между нитками я не знаю.
может вам с++ нужно подучить.
так то, вы можете заюзать глобальную переменную, например.
Цитата: Igors от Сентябрь 03, 2018, 17:52
Мы увидим std реализацию этой простейшей задачки - или только понты типа
я уже выше привел примеры. для иллюстрации вполне сойдёт.
если в танке - ничем не могу помочь.
пилить с нуля gui на голых плюсах, разумеется я не буду.
мог бы наколбасить на голом MFC, например. но мне лень.
и о боже! MFC - это тоже оказывается своя экосистема.
Цитата: Igors от Сентябрь 03, 2018, 17:52
У меня давно уже стойкое подозрение - человек "ниасилил" букварь. Развейте пожалуйста, очень не хочется разочаровываться в человеке
так это же вы в вашем примере выше зачем то колбасили наследование, с переопределением метода run.
наверное, зачем то это все таки вам было нужно сделать.
мой тезис остаётся в силе:
колбасить ещё один класс, только для того,
что бы тред запустить - напрасное раздутие кода,
неудобный, убогий дизайн.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Igors, это ты? :)
«
Ответ #110 :
Сентябрь 04, 2018, 06:44 »
Цитата: _Bers от Сентябрь 04, 2018, 03:21
а асинхронный ввод/вывод конечно же реализуется не на многопоточке, да?
Нет. Асинхронка может работать и в одном потоке.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Igors, это ты? :)
«
Ответ #111 :
Сентябрь 04, 2018, 14:08 »
Цитата: _Bers от Сентябрь 04, 2018, 03:53
я уже выше привел примеры. для иллюстрации вполне сойдёт.
если в танке - ничем не могу помочь.
пилить с нуля gui на голых плюсах, разумеется я не буду.
А делать какое-то UI никто и не просил. Можете взять мое, или просто печатать в консоль. Если создается нитка, то она должна хотя бы минимально общаться с другими. Запуск "на деревню дедушке" никому не нужен, придется так или иначе "мониторить" запущенную задачу. В Qt для этого есть удобный механизм, а в std - ни кола, ни двора.
Цитата: _Bers от Сентябрь 04, 2018, 03:53
мой тезис остаётся в силе:
колбасить ещё один класс, только для того,
что бы тред запустить - напрасное раздутие кода,
неудобный, убогий дизайн.
Да какой там "тезис" - так, мелочная претензия. Уже говорилось что run перекрывается только если хочется самому побаловаться с синхронизацией - пожалуйста, можно и так. Но делать это всякий раз - да кто Вам такое сказал? См мой пример в аттаче - никаких наследований от QThread там нет, нитке можно кинуть любое кол-во задач не прилагая никаких усилий. Можно просто запустить нитку без задач - и это ничем не грозит, и проц она не жрет. Можно удобно подсесть на сигналы завершения нитки и/или задачи. Вкусные плюшки. Наоборот, std-шный стиль запуска выглядит "каменным веком" - обязует заботиться обо всем самому. Ну спасибо хоть это дали, раньше вообще ничего не было.
В общем, в очередной раз убеждаюсь - изучение std отрицательно влияет на изучающего
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Igors, это ты? :)
«
Ответ #112 :
Сентябрь 04, 2018, 17:05 »
Цитата: _Bers от Сентябрь 04, 2018, 03:21
а асинхронный ввод/вывод конечно же реализуется не на многопоточке, да?
Конечно нет, она реализуется на эвентлупе (select/poll/epoll/kqueue)
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Igors, это ты? :)
«
Ответ #113 :
Сентябрь 04, 2018, 17:06 »
Цитата: _Bers от Сентябрь 04, 2018, 03:30
лямбда-геттер жеж.
и пускай дергает, когда ему нужно из своего треда.
какие проблемы?
И как оно узнает, когда надо дергать? Поллинг сделать? Ну-ну.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Igors, это ты? :)
«
Ответ #114 :
Сентябрь 04, 2018, 17:13 »
Цитата: _Bers от Сентябрь 04, 2018, 03:53
мой тезис остаётся в силе:
колбасить ещё один класс, только для того,
что бы тред запустить - напрасное раздутие кода,
неудобный, убогий дизайн.
Мне кажется или вы читать не умеете? Третий раз на пишу - на момент написания QThread другого способа НЕ БЫЛО, а ваш хваленый стд ни тредов не имел, ни анордеред мапы.
Аналог std::function написать было нельзя потому что компиляторы не умели в шаблоны нормально.
Сейчас QThread нужен ТОЛЬКО для того чтобы крутить эвентлуп, НЕ НУЖНО перегружать run. Используйте для этого std::thread.
У них сейчас РАЗНЫЕ задачи.
Метод run есть ТОЛЬКО ДЛЯ СОВМЕСТИМОСТИ чтобы не сломать кучу кода.
Я как со стенкой разговариваю, ей-богу.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Igors, это ты? :)
«
Ответ #115 :
Сентябрь 04, 2018, 17:19 »
Кстати _Bers спалился что не опускался на уровень еполла и не писал сервак решающий "проблему 10к"
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #116 :
Сентябрь 04, 2018, 18:42 »
Цитата: Old от Сентябрь 04, 2018, 06:44
Цитата: _Bers от Сентябрь 04, 2018, 03:21
а асинхронный ввод/вывод конечно же реализуется не на многопоточке, да?
Нет. Асинхронка может работать и в одном потоке.
вы осознаете, что противоречите здравому смыслу?
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #117 :
Сентябрь 04, 2018, 18:43 »
Цитата: Авварон от Сентябрь 04, 2018, 17:05
Цитата: _Bers от Сентябрь 04, 2018, 03:21
а асинхронный ввод/вывод конечно же реализуется не на многопоточке, да?
Конечно нет, она реализуется на эвентлупе (select/poll/epoll/kqueue)
которые реализуются за счет многопоточки. Карл.
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #118 :
Сентябрь 04, 2018, 18:45 »
Цитата: Авварон от Сентябрь 04, 2018, 17:06
Цитата: _Bers от Сентябрь 04, 2018, 03:30
лямбда-геттер жеж.
и пускай дергает, когда ему нужно из своего треда.
какие проблемы?
И как оно узнает, когда надо дергать? Поллинг сделать? Ну-ну.
баранку гну.
механизму нужно что то дергать.
механизм знает, когда и зачем ему это нужно.
ваш Кеп.
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #119 :
Сентябрь 04, 2018, 18:49 »
Цитата: Авварон от Сентябрь 04, 2018, 17:13
Цитата: _Bers от Сентябрь 04, 2018, 03:53
мой тезис остаётся в силе:
колбасить ещё один класс, только для того,
что бы тред запустить - напрасное раздутие кода,
неудобный, убогий дизайн.
Мне кажется или вы читать не умеете? Третий раз на пишу - на момент написания QThread другого способа НЕ БЫЛО, а ваш хваленый стд ни тредов не имел, ни анордеред мапы.
Аналог std::function написать было нельзя потому что компиляторы не умели в шаблоны нормально.
Сейчас QThread нужен ТОЛЬКО для того чтобы крутить эвентлуп, НЕ НУЖНО перегружать run. Используйте для этого std::thread.
У них сейчас РАЗНЫЕ задачи.
Метод run есть ТОЛЬКО ДЛЯ СОВМЕСТИМОСТИ чтобы не сломать кучу кода.
Я как со стенкой разговариваю, ей-богу.
Мне кажется или вы читать не умеете?
самолеты нужны, что бы летать.
у них у всех одинаковая задача.
с std::thread всякие кутешные сокеты начнут лагать.
кутя без своего убогого лупа как бе не особо юзабельна.
тупо же, когда слоты-сигналы перестают слотиттить-сигналить
а что там было в бородатых - не суть важно.
та же ася например, не выносит моск своим эвентлупом.
он вообще упрятан так, что простому смертному о нем даже знать не обязательно.
Записан
Страниц:
1
...
6
7
[
8
]
9
10
...
17
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...