Russian Qt Forum
Ноябрь 22, 2024, 10:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 4 5 [6] 7 8 ... 17   Вниз
  Печать  
Автор Тема: Igors, это ты? :)  (Прочитано 132021 раз)
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #75 : Август 30, 2018, 12:00 »

сказал своим.
они ответили: мухи отдельно, котлеты отдельно.
событийно-управляемая модель ортогональна тред-пулу.
Какой мудрый ответ! И главное - оригинальный и остроумный Улыбающийся Про мухи и котлеты никто еще не додумался! Но вернемся к (сопливой) задачке
Цитировать
- сделать 2 нитки, одна принимает символ с клавы, другая печатает
Задача поставлена конкретно - 2 нитки. Чего базарить? Сказано для 2 - делайте для 2. Сказано для N - делайте для N. Разумеется это уже до задача, и заказчик обязан сформулировать внятные требования - а кто кого тогда должен печатать. А Вы обязаны снять с него за это еще бабло. Не надо лезть с решениями "на все случаи жизни" - можно (мягко) предложить -и быстренько заткнуться если нет понимания. Тише едешь - дальше будешь

Если же чисто технически - то схема семафора вполне хороша и здесь. Небольшим ее минусом обычно является то что может потребоваться еще блокировка для доступа к данным - ну это не смертельно

во-первых, заказчику нужен продукт. он хочет "сделай красиво".
и ему глубоко фиолетово, что там под капотом.
а вот что там под капотом - решает исполнитель.
и если он решил заюзать параллельность там,
где необходима последовательность,
ну может просто не выспался?

а во-вторых: мухи отдельно, котлеты отдельно.
событийная модель ортогональна тред-пулу.

ну это не смертельно
вот так и рождаеццо говнокод.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #76 : Август 30, 2018, 12:05 »

а во-вторых: мухи отдельно, котлеты отдельно.
событийная модель ортогональна тред-пулу.

Также, как и исполнение задач:) Тред пул - это просто пул тредов, не более, не менее. А хотите вы в нем выполнять таски или крутить эвентлупы - это уже другой вопрос. Вы же почему-то различаете эвентлупы и пул но не различаете очередь задач и пул.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #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 Offline

Сообщений: 3260


Просмотр профиля
« Ответ #78 : Август 30, 2018, 14:50 »

имхо, сравнивать тред-пул с моделью событий, это все равно, что сравнивать газонокосилку с бананом Улыбающийся


Ну изначально претензия была что кутред слишком СЛОЖНА он эвентлуп крутит
Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #79 : Август 30, 2018, 16:34 »

а во-вторых: мухи отдельно, котлеты отдельно.
событийная модель ортогональна тред-пулу.

Также, как и исполнение задач:) Тред пул - это просто пул тредов, не более, не менее.
А хотите вы в нем выполнять таски или крутить эвентлупы - это уже другой вопрос.
Вы же почему-то различаете эвентлупы и пул но не различаете очередь задач и пул.


нет. тред-пул - это не просто пул тредов.
потому что просто пул тредов никому не нужен.
точно так же, как никому не нужны просто треды.

тред-пул нужен именно для того, что бы юзать заранее созданные треды,
для выполнения задач, по мере их поступления.
внезапно, да?

и в тред-пуле нет никаких эвент-лупов,
потому что эвент-лупы для работы ему не нужны.

и я различаю очередь задач (банальный стек из std::function),
и пул (механизм управления временем сна и жизни своих тредов)
Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #80 : Август 30, 2018, 16:37 »

имхо, сравнивать тред-пул с моделью событий, это все равно, что сравнивать газонокосилку с бананом Улыбающийся


Ну изначально претензия была что кутред слишком СЛОЖНА он эвентлуп крутит

не было такой притензии.
глубоко фиолетова, насколько сложен кутред (его устройство никого не волнует)
важно насколько удобно его использовать.
а он - редкосное г, ни разу не удобный.
и мало того, что он вынуждает писать тонны дополнительного кода:
создавать какие то классы, наследоваться, тополя.
так ещё он завязан на кютешную систему сообщений.
в результате имеет тормоза, и можно поймать нежданчиков в сплаве с std.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #81 : Август 30, 2018, 17:42 »

Ну изначально претензия была что кутред слишком СЛОЖНА он эвентлуп крутит

Кутред тоже говно, именно из-за этого эвентлупа.
Это поведение абсолютно неочевидно и приводит к кривому коду и багам.
Записан

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 Offline

Сообщений: 3260


Просмотр профиля
« Ответ #82 : Август 30, 2018, 22:24 »

не было такой притензии.
глубоко фиолетова, насколько сложен кутред (его устройство никого не волнует)
важно насколько удобно его использовать.
а он - редкосное г, ни разу не удобный.
и мало того, что он вынуждает писать тонны дополнительного кода:
создавать какие то классы, наследоваться, тополя.
так ещё он завязан на кютешную систему сообщений.
в результате имеет тормоза, и можно поймать нежданчиков в сплаве с std.


Я на предыдущей странице распинался про обратную совместимость.
Уж извините, на момен написания QThread не было ни лябд, ни сраной std::function,  а мелкософтный компилятор не умел даже в шаблоные мембер функции.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #83 : Август 30, 2018, 22:27 »

Ну изначально претензия была что кутред слишком СЛОЖНА он эвентлуп крутит

Кутред тоже говно, именно из-за этого эвентлупа.
Это поведение абсолютно неочевидно и приводит к кривому коду и багам.


Мммм, как ведет себя класс написано в документации.
Если кутред сабкласснуть, но никакого эвентлупа не будет.
Как он может мешать если его нет?
А если вы не сабклассили кутред, то что вы ожидали?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #84 : Август 31, 2018, 06:51 »

не было такой притензии.
глубоко фиолетова, насколько сложен кутред (его устройство никого не волнует)
важно насколько удобно его использовать.
а он - редкосное г, ни разу не удобный.
и мало того, что он вынуждает писать тонны дополнительного кода:
создавать какие то классы, наследоваться, тополя.
так ещё он завязан на кютешную систему сообщений.
в результате имеет тормоза, и можно поймать нежданчиков в сплаве с std.
Мое мнение совершенно противоположное. QThread - прекрасный механизм. Единственное что можно поставить ему в упрек - он разлагает пользователя Qt, настолько просто и удобно все делать на QThread что и знать/понимать особо ничего не надо. Впрочем есть и QThreadPool и QtConcurrent

Низкоуровневые примитивы синхронизации используются крайне редко. Практически всегда нужно обеспечить хотя бы abort (cancel) и stop (pause), попробуйте добавить этот ф-ционал в любой из примеров std - это окажется совсем не так просто как кажется (та просто  флажок - и усе).

Основная заслуга std - в ее названии Улыбающийся Т.е. на нее всегда можно рассчитывать, любой компилятор ее обязан поддерживать. Но пупом земли она никогда не была и не будет.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #85 : Август 31, 2018, 07:32 »

Низкоуровневые примитивы синхронизации используются крайне редко.
Ну это у вас. Весь остальной мир по прежнему их использует. Улыбающийся

Практически всегда нужно обеспечить хотя бы abort (cancel) и stop (pause), попробуйте добавить этот ф-ционал в любой из примеров std - это окажется совсем не так просто как кажется (та просто  флажок - и усе).
Вы не знаете как остановить выполнение потока? Улыбающийся
А пауза, не смотря на свою полную бесполезность (ну может в GUI программах можно придумать хоть какое-то применение), легко делается на тех же условных переменных.
Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #86 : Август 31, 2018, 12:33 »

Я на предыдущей странице распинался про обратную совместимость.
Уж извините, на момен написания QThread не было ни лябд, ни сраной std::function,  а мелкософтный компилятор не умел даже в шаблоные мембер функции.

с тех много воды утекло. плюсы шагнули далеко в будущие.
а кутред как был г. так им и остался.
Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #87 : Август 31, 2018, 12:44 »

настолько просто и удобно все делать на QThread что и знать/понимать особо ничего не надо.
вы находите удобным писать каждый раз на каждый чих очередной класс с наследованием?
писать тонны кода там, где можно было бы ничего не писать?

кстати, что будет с кутешным сокетом,
если запихать его в обычный std::tread,
и попробовать читать/писать ?

внезапно окажется, что знать/понимать нужно,
что бы не поиметь нежданчиков.

Практически всегда нужно обеспечить хотя бы abort (cancel) и stop (pause), попробуйте добавить этот ф-ционал в любой из примеров std - это окажется совсем не так просто как кажется (та просто  флажок - и усе).

выше, пример с std::conditional собственно иллюстрирует функциональность паузы.
что такое cancel - сильно зависит от конкретной задачи.
в общем случае поджигаем флажок и пробуждаем тред.
тред просыпается, смотрит: флажок горит, значит нужно сворачивать лавочку.
флажок не горит - делаем дело, и спим дальше.

Основная заслуга std - в ее названии Улыбающийся Т.е. на нее всегда можно рассчитывать, любой компилятор ее обязан поддерживать. Но пупом земли она никогда не была и не будет.

она уже - пуп земли. и всегда им была.
именно потому, что на неё всегда можно рассчитывать,
и любой моральный компилятор обязан её поддерживать.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #88 : Август 31, 2018, 13:34 »

вы находите удобным писать каждый раз на каждый чих очередной класс с наследованием?
писать тонны кода там, где можно было бы ничего не писать?
Какие тонны? Где?  Непонимающий Давайте не скатываться в пустые пререкания, а возьмем простую задачку и сравним.  Ну вот хотя бы банальщина - копирование файла в фоне (типичный "вынос в поток"). С минимальным стервисом - показ прогресса в главной нитке (пусть в консоли) и возможность отмены. Или предложите свою, я не против.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #89 : Август 31, 2018, 18:07 »

Я на предыдущей странице распинался про обратную совместимость.
Уж извините, на момен написания QThread не было ни лябд, ни сраной std::function,  а мелкософтный компилятор не умел даже в шаблоные мембер функции.

с тех много воды утекло. плюсы шагнули далеко в будущие.
а кутред как был г. так им и остался.

Вы предлагает сломать весь существующий код или чо?
Ну давайте заодно в std::vector на signed перейдем, а то говно какое-то, приходится size_t богомерзкий использовать.
Или std::string наконец уже допилим до поддержки utf-8 и различных кодировок.
Записан
Страниц: 1 ... 4 5 [6] 7 8 ... 17   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 23.