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

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

Страниц: 1 ... 5 6 [7] 8 9 ... 13   Вниз
  Печать  
Автор Тема: К вопросу об организации взаимодействия пула производителей и одного потребителя  (Прочитано 61089 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #90 : Сентябрь 20, 2019, 20:21 »

Дык, нет другого разумного решения) В контексте данной задачи, всё так или иначе сводится к пулу Улыбающийся
Так что мы здесь не увидем решения чисто на атомиках, без усыпления и пробуждения потоков)

А вот Igors писал, что

Вам в любом случае придётся усыплять и пробуждать тпотоки..
А можно я как-нибудь попробую без этого?  Улыбающийся

Думаете уже не будет пробовать? Улыбающийся
Жаль. Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #91 : Сентябрь 20, 2019, 20:28 »

Цитировать
А вот Igors писал, что
Вы что, igors'а не знаете?  Улыбающийся
Сколько у нас тут баталий уже было  Улыбающийся

Цитировать
Думаете уже не будет пробовать?  Улыбающийся
Думаю, всё) Тема выдохлась)

Ну, во всяком случае, я ответы на свои вопросы получил, и благодарен всем, кто мотивировал меня на то, чтобы разобратся в этом вопросе  Улыбающийся
  
« Последнее редактирование: Сентябрь 20, 2019, 20:40 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #92 : Сентябрь 20, 2019, 21:06 »

Дык, нет другого разумного решения) В контексте данной задачи, всё так или иначе сводится к пулу Улыбающийся
Так что мы здесь не увидим решения чисто на атомиках, без усыпления и пробуждения потоков)
Оно давно готово, там кстати несложно. Но, поскольку это никого не интересует, то чего я буду лезть типа "посмотрите как я сделал!" Улыбающийся Это ни к чему. Кстати погонял дустовский пул.

...чтобы разобратся в этом вопросе  Улыбающийся
Развитие происходит по спирали Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #93 : Сентябрь 20, 2019, 21:09 »

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

Сообщений: 2094



Просмотр профиля
« Ответ #94 : Сентябрь 20, 2019, 21:13 »

Цитировать
Оно давно готово, там кстати несложно. Но, поскольку это никого не интересует, то чего я буду лезть типа "посмотрите как я сделал!"  Улыбающийся
Ну почему же, я всегда готов (как Гагарин и Титов) к конструктивному обсуждению) Так что, всегда велком)

Цитировать
Кстати погонял дустовский пул.
И как впечатления?)

Цитировать
Развитие происходит по спирали  Улыбающийся
Да я бы не сказал.. но это уже совсем другая история, как говорил Леонид Каневский)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #95 : Сентябрь 21, 2019, 09:57 »

Ну почему же, я всегда готов (как Гагарин и Титов) к конструктивному обсуждению)
Ну пока еще не очень готовы Улыбающийся Напр

Дык, нет другого разумного решения) В контексте данной задачи, всё так или иначе сводится к пулу Улыбающийся
С точностью до наоборот. Пул очень хорош когда задачи возникают "спонтанно", его сила именно в "бездумности" - закинул и все. А у Вас на каждом раунде заранее известно и число задач и исходные данные для каждой. А значит вовсе необязательно "брать по одной", всегда засисяться мутексом и.т.п. Поэтому более подходящим выглядит хотя бы QtConcurrent (хотя я сам его ни разу не использовал Улыбающийся), ну а OpenMP еще лучше.

Ну и в (в сотый раз) упомяну что все это роялит если накладные расходы велики. А если они порядка 2% - то оптимизировать это нафиг надо, можно цвести, пахнуть, и считать что уже все постиг, со всем "разобрался"  Улыбающийся

Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #96 : Сентябрь 21, 2019, 10:05 »

Ну пока еще не очень готовы Улыбающийся Напр
Ну вы то точно готовы. Улыбающийся

Поэтому более подходящим выглядит хотя бы QtConcurrent (хотя я сам его ни разу не использовал Улыбающийся)
Под капотом QtConcurrent/OpenMP все тот же пул потоков. Улыбающийся

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

Сообщений: 2094



Просмотр профиля
« Ответ #97 : Сентябрь 21, 2019, 10:14 »

Цитировать
С точностью до наоборот. Пул очень хорош когда задачи возникают "спонтанно", его сила именно в "бездумности" - закинул и все. А у Вас на каждом раунде заранее известно и число задач и исходные данные для каждой. А значит вовсе необязательно "брать по одной", всегда засисяться мутексом и.т.п.
Я уже мозг сломал, обдумывая как эту проблему (помните, описанную ситуацию с босом и подчинёнными) реализовать как то иначе..
Я буду только рад новым идеям и примерам реализации этого взаимодействия  Улыбающийся
« Последнее редактирование: Сентябрь 21, 2019, 10:25 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #98 : Сентябрь 21, 2019, 10:34 »

Я уже мозг сломал, обдумывая как эту проблему (помните, описанную ситуацию с босом и подчинёнными) реализовать как то иначе..
Я буду только рад новым идеям и примерам реализации этого взаимодействия  Улыбающийся
В лучшем случае мы увидим решение на спинлоке. Улыбающийся
 
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #99 : Сентябрь 21, 2019, 10:49 »

Я уже мозг сломал, обдумывая как эту проблему (помните, описанную ситуацию с босом и подчинёнными) реализовать как то иначе..
Я буду только рад новым идеям и примерам реализации этого взаимодействия  Улыбающийся
Да какую "эту"? У Вас же никакой проблемы нет. С такими шикарными задачами можно брать любой тул - и все получится хорошо.

QThreadPool
QtConcurrent
boost::thread_pool
OpenMP
и.т.п.

Выбирайте ЛЮБОЙ. Хотите велик, чисто для понимания? Хорошее дело. Ну и перепишите Вы эту несчастную очередь, делов на 10 мин. Чего/зачем Вы там нагородили? Зачем связались с футурой и др std::говном? Оно там 100 лет не нужно
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #100 : Сентябрь 21, 2019, 10:57 »

Цитировать
Выбирайте ЛЮБОЙ. Хотите велик, чисто для понимания? Хорошее дело. Ну и перепишите Вы эту несчастную очередь, делов на 10 мин. Чего/зачем Вы там нагородили? Зачем связались с футурой и др std::говном? Оно там 100 лет не нужно
Как без футуры то/флажков? Мне же нужно ждать ожидания/сигнала/отмашки, что ВСЕ задачи воркеры уже сделали, чтоб мне пойти потом на следующий круг..

Кстатии, boost::thread_pool, я там так и не увидел (может, плохо искал), как там понять, что все задачи выполнены..  Непонимающий 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #101 : Сентябрь 21, 2019, 11:01 »

Цитировать
С такими шикарными задачами можно брать любой тул - и все получится хорошо.
Подождите, мы же сейчас не о пуле говорим?) С пулом уже всё понятно, мне интересно альтернативное решение, чтоб его понять и сравнить) И задачи могут быть даже самые "мелкие".. Улыбающийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #102 : Сентябрь 21, 2019, 11:12 »

Кстатии, boost::thread_pool, я там так и не увидел (может, плохо искал), как там понять, что все задачи выполнены..  Непонимающий 
Вы про пул из asio?
Там есть join().
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #103 : Сентябрь 21, 2019, 11:14 »

Да, и по поводу лифтов. Типичная задача оптимизации, наверняка хорошо известная. Ну ладно, допустим мы хотим это как-то приспособить к "разпоточиванию".

Начало: очевидно "число лифтов" - это у нас "число ядер". Уже тут должен сработать рефлекс типа "ой, что-то слишком гладко, не к добру"

Позиция 1: если есть какое-то "расписание лифтов", то в любой лифт студент уже не полезет. Чему это соответствует в multi-threading? Что задачи должны иметь специфику и выполняться на определенных рабочих нитках (а не на каждой). Так бывает лишь "иногда". Впрочем это еще цветочки

Позиция 2: а вот времена t1 и t2 - уже ягодки. Для задачи оптимизации они действительно необходимы, но как (или куда) воткнуть их в multi-threading?

"Контрольный выстрел": и оказывается надо еще заранее иметь готовое аналитическое решение, а откуда его брать - хз.

Вывод: да, и "разпоточивание" и задачи оптимизации часто стремятся "наилучшим образом распределить имеющиеся ресурсы", но на этом всякое сходство заканчивается. Multi-threading не имеет ничего общего с аналитической оптимизацией. С теорией игр - тем более. Вот для "моделирования" можно/удобно использовать N лифтов-ниток, но это уже "совсем другая история"
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #104 : Сентябрь 21, 2019, 11:29 »

Джентельмены) Должен откланиться, срочно убегаю) На последние два поста отвечу позже)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: 1 ... 5 6 [7] 8 9 ... 13   Вверх
  Печать  
 
Перейти в:  


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