Russian Qt Forum
Ноябрь 25, 2024, 12:07
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Разное
>
Говорилка
>
Igors, это ты? :)
Страниц:
1
...
4
5
[
6
]
7
8
...
17
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Igors, это ты? :) (Прочитано 132468 раз)
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #75 :
Август 30, 2018, 12:00 »
Цитата: Igors от Август 29, 2018, 19:12
Цитата: _Bers от Август 29, 2018, 16:56
сказал своим.
они ответили: мухи отдельно, котлеты отдельно.
событийно-управляемая модель ортогональна тред-пулу.
Какой мудрый ответ! И главное - оригинальный и остроумный
Про мухи и котлеты никто еще не додумался! Но вернемся к (сопливой) задачке
Цитировать
- сделать 2 нитки, одна принимает символ с клавы, другая печатает
Задача поставлена конкретно - 2 нитки. Чего базарить? Сказано для 2 - делайте для 2. Сказано для N - делайте для N. Разумеется это уже до задача, и заказчик обязан сформулировать внятные требования - а кто кого тогда должен печатать. А Вы обязаны снять с него за это еще бабло. Не надо лезть с решениями "на все случаи жизни" - можно (мягко) предложить -и быстренько заткнуться если нет понимания. Тише едешь - дальше будешь
Если же чисто технически - то схема семафора вполне хороша и здесь. Небольшим ее минусом обычно является то что может потребоваться еще блокировка для доступа к данным - ну это не смертельно
во-первых, заказчику нужен продукт. он хочет "сделай красиво".
и ему глубоко фиолетово, что там под капотом.
а вот что там под капотом - решает исполнитель.
и если он решил заюзать параллельность там,
где необходима последовательность,
ну может просто не выспался?
а во-вторых: мухи отдельно, котлеты отдельно.
событийная модель ортогональна тред-пулу.
Цитата: Igors от Август 29, 2018, 19:12
ну это не смертельно
вот так и рождаеццо говнокод.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Igors, это ты? :)
«
Ответ #76 :
Август 30, 2018, 12:05 »
Цитата: _Bers от Август 30, 2018, 12:00
а во-вторых: мухи отдельно, котлеты отдельно.
событийная модель ортогональна тред-пулу.
Также, как и исполнение задач:) Тред пул - это просто пул тредов, не более, не менее. А хотите вы в нем выполнять таски или крутить эвентлупы - это уже другой вопрос. Вы же почему-то различаете эвентлупы и пул но не различаете очередь задач и пул.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Igors, это ты? :)
«
Ответ #77 :
Август 30, 2018, 14:49 »
имхо, сравнивать тред-пул с моделью событий, это все равно, что сравнивать газонокосилку с бананом
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Igors, это ты? :)
«
Ответ #78 :
Август 30, 2018, 14:50 »
Цитата: Racheengel от Август 30, 2018, 14:49
имхо, сравнивать тред-пул с моделью событий, это все равно, что сравнивать газонокосилку с бананом
Ну изначально претензия была что кутред слишком СЛОЖНА он эвентлуп крутит
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #79 :
Август 30, 2018, 16:34 »
Цитата: Авварон от Август 30, 2018, 12:05
Цитата: _Bers от Август 30, 2018, 12:00
а во-вторых: мухи отдельно, котлеты отдельно.
событийная модель ортогональна тред-пулу.
Также, как и исполнение задач:) Тред пул - это просто пул тредов, не более, не менее.
А хотите вы в нем выполнять таски или крутить эвентлупы - это уже другой вопрос.
Вы же почему-то различаете эвентлупы и пул но не различаете очередь задач и пул.
нет. тред-пул - это не просто пул тредов.
потому что просто пул тредов никому не нужен.
точно так же, как никому не нужны просто треды.
тред-пул нужен именно для того, что бы юзать заранее созданные треды,
для выполнения задач, по мере их поступления.
внезапно, да?
и в тред-пуле нет никаких эвент-лупов,
потому что эвент-лупы для работы ему не нужны.
и я различаю очередь задач (банальный стек из std::function),
и пул (механизм управления временем сна и жизни своих тредов)
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #80 :
Август 30, 2018, 16:37 »
Цитата: Авварон от Август 30, 2018, 14:50
Цитата: Racheengel от Август 30, 2018, 14:49
имхо, сравнивать тред-пул с моделью событий, это все равно, что сравнивать газонокосилку с бананом
Ну изначально претензия была что кутред слишком СЛОЖНА он эвентлуп крутит
не было такой притензии.
глубоко фиолетова, насколько сложен кутред (его устройство никого не волнует)
важно насколько удобно его использовать.
а он - редкосное г, ни разу не удобный.
и мало того, что он вынуждает писать тонны дополнительного кода:
создавать какие то классы, наследоваться, тополя.
так ещё он завязан на кютешную систему сообщений.
в результате имеет тормоза, и можно поймать нежданчиков в сплаве с std.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Igors, это ты? :)
«
Ответ #81 :
Август 30, 2018, 17:42 »
Цитата: Авварон от Август 30, 2018, 14:50
Ну изначально претензия была что кутред слишком СЛОЖНА он эвентлуп крутит
Кутред тоже говно, именно из-за этого эвентлупа.
Это поведение абсолютно неочевидно и приводит к кривому коду и багам.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Igors, это ты? :)
«
Ответ #82 :
Август 30, 2018, 22:24 »
Цитата: _Bers от Август 30, 2018, 16:37
не было такой притензии.
глубоко фиолетова, насколько сложен кутред (его устройство никого не волнует)
важно насколько удобно его использовать.
а он - редкосное г, ни разу не удобный.
и мало того, что он вынуждает писать тонны дополнительного кода:
создавать какие то классы, наследоваться, тополя.
так ещё он завязан на кютешную систему сообщений.
в результате имеет тормоза, и можно поймать нежданчиков в сплаве с std.
Я на предыдущей странице распинался про обратную совместимость.
Уж извините, на момен написания QThread не было ни лябд, ни сраной std::function, а мелкософтный компилятор не умел даже в шаблоные мембер функции.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Igors, это ты? :)
«
Ответ #83 :
Август 30, 2018, 22:27 »
Цитата: Racheengel от Август 30, 2018, 17:42
Цитата: Авварон от Август 30, 2018, 14:50
Ну изначально претензия была что кутред слишком СЛОЖНА он эвентлуп крутит
Кутред тоже говно, именно из-за этого эвентлупа.
Это поведение абсолютно неочевидно и приводит к кривому коду и багам.
Мммм, как ведет себя класс написано в документации.
Если кутред сабкласснуть, но никакого эвентлупа не будет.
Как он может мешать если его нет?
А если вы не сабклассили кутред, то что вы ожидали?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Igors, это ты? :)
«
Ответ #84 :
Август 31, 2018, 06:51 »
Цитата: _Bers от Август 30, 2018, 16:37
не было такой притензии.
глубоко фиолетова, насколько сложен кутред (его устройство никого не волнует)
важно насколько удобно его использовать.
а он - редкосное г, ни разу не удобный.
и мало того, что он вынуждает писать тонны дополнительного кода:
создавать какие то классы, наследоваться, тополя.
так ещё он завязан на кютешную систему сообщений.
в результате имеет тормоза, и можно поймать нежданчиков в сплаве с std.
Мое мнение совершенно противоположное. QThread - прекрасный механизм. Единственное что можно поставить ему в упрек - он разлагает пользователя Qt, настолько просто и удобно все делать на QThread что и знать/понимать особо ничего не надо. Впрочем есть и QThreadPool и QtConcurrent
Низкоуровневые примитивы синхронизации используются крайне редко. Практически всегда нужно обеспечить хотя бы abort (cancel) и stop (pause), попробуйте добавить этот ф-ционал в любой из примеров std - это окажется совсем не так просто как кажется (та просто флажок - и усе).
Основная заслуга std - в ее названии
Т.е. на нее всегда можно рассчитывать, любой компилятор ее обязан поддерживать. Но пупом земли она никогда не была и не будет.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Igors, это ты? :)
«
Ответ #85 :
Август 31, 2018, 07:32 »
Цитата: Igors от Август 31, 2018, 06:51
Низкоуровневые примитивы синхронизации используются крайне редко.
Ну это у вас. Весь остальной мир по прежнему их использует.
Цитата: Igors от Август 31, 2018, 06:51
Практически всегда нужно обеспечить хотя бы abort (cancel) и stop (pause), попробуйте добавить этот ф-ционал в любой из примеров std - это окажется совсем не так просто как кажется (та просто флажок - и усе).
Вы не знаете как остановить выполнение потока?
А пауза, не смотря на свою полную бесполезность (ну может в GUI программах можно придумать хоть какое-то применение), легко делается на тех же условных переменных.
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #86 :
Август 31, 2018, 12:33 »
Цитата: Авварон от Август 30, 2018, 22:24
Я на предыдущей странице распинался про обратную совместимость.
Уж извините, на момен написания QThread не было ни лябд, ни сраной std::function, а мелкософтный компилятор не умел даже в шаблоные мембер функции.
с тех много воды утекло. плюсы шагнули далеко в будущие.
а кутред как был г. так им и остался.
Записан
_Bers
Бывалый
Offline
Сообщений: 486
Re: Igors, это ты? :)
«
Ответ #87 :
Август 31, 2018, 12:44 »
Цитата: Igors от Август 31, 2018, 06:51
настолько просто и удобно все делать на QThread что и знать/понимать особо ничего не надо.
вы находите удобным писать каждый раз на каждый чих очередной класс с наследованием?
писать тонны кода там, где можно было бы ничего не писать?
кстати, что будет с кутешным сокетом,
если запихать его в обычный std::tread,
и попробовать читать/писать ?
внезапно окажется, что знать/понимать нужно,
что бы не поиметь нежданчиков.
Цитата: Igors от Август 31, 2018, 06:51
Практически всегда нужно обеспечить хотя бы abort (cancel) и stop (pause), попробуйте добавить этот ф-ционал в любой из примеров std - это окажется совсем не так просто как кажется (та просто флажок - и усе).
выше, пример с std::conditional собственно иллюстрирует функциональность паузы.
что такое cancel - сильно зависит от конкретной задачи.
в общем случае поджигаем флажок и пробуждаем тред.
тред просыпается, смотрит: флажок горит, значит нужно сворачивать лавочку.
флажок не горит - делаем дело, и спим дальше.
Цитата: Igors от Август 31, 2018, 06:51
Основная заслуга std - в ее названии
Т.е. на нее всегда можно рассчитывать, любой компилятор ее обязан поддерживать. Но пупом земли она никогда не была и не будет.
она уже - пуп земли. и всегда им была.
именно потому, что на неё всегда можно рассчитывать,
и любой моральный компилятор обязан её поддерживать.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Igors, это ты? :)
«
Ответ #88 :
Август 31, 2018, 13:34 »
Цитата: _Bers от Август 31, 2018, 12:44
вы находите удобным писать каждый раз на каждый чих очередной класс с наследованием?
писать тонны кода там, где можно было бы ничего не писать?
Какие тонны? Где?
Давайте не скатываться в пустые пререкания, а возьмем простую задачку и сравним. Ну вот хотя бы банальщина - копирование файла в фоне (типичный "вынос в поток"). С минимальным стервисом - показ прогресса в главной нитке (пусть в консоли) и возможность отмены. Или предложите свою, я не против.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Igors, это ты? :)
«
Ответ #89 :
Август 31, 2018, 18:07 »
Цитата: _Bers от Август 31, 2018, 12:33
Цитата: Авварон от Август 30, 2018, 22:24
Я на предыдущей странице распинался про обратную совместимость.
Уж извините, на момен написания QThread не было ни лябд, ни сраной std::function, а мелкософтный компилятор не умел даже в шаблоные мембер функции.
с тех много воды утекло. плюсы шагнули далеко в будущие.
а кутред как был г. так им и остался.
Вы предлагает сломать весь существующий код или чо?
Ну давайте заодно в std::vector на signed перейдем, а то говно какое-то, приходится size_t богомерзкий использовать.
Или std::string наконец уже допилим до поддержки utf-8 и различных кодировок.
Записан
Страниц:
1
...
4
5
[
6
]
7
8
...
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...