powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Какой инструмент многопоточности используете?
19 сообщений из 69, страница 3 из 3
Какой инструмент многопоточности используете?
    #39398208
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася УткинТ.е. обычный виндовый WaitForMultipleObjects() вообще не гарантирует, что поток его ожидающий продолжит выполнение через 1нс или 1мс или даже 1 секунду после завершения ожидаемого потока?
Виндовс не гарантирует конкретное время, т.к. это не ОС реального времени, а ОС с вытесняющей многозадачностью.
Если будут работать потоки с более высоким приоритетом, то твои будут ждать пока они закончат.
Если будет работать много потоков с одинаковым приоритетом, то твой станет в очередь.
Вобщем виндовс гарантирует что будет стараться дать проц твоему потоку как можно быстрее. В лучшем случае это наносекунды, в худшем как получится.

Почитай Рихтера
Глава 7. Планирование потоков
Глава 9. Синхронизация потоков
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Какой инструмент многопоточности используете?
    #39754306
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
std::async После работы async-ов, например, этой , обнаруживаю кучу потоков в процессе, хотя все они отработали. Это пул? Как почистить? Надо ли это делать?
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754330
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
]Мне не нравится C++ Multi-threading из- за большого количества кода, за которым теряется суть программы. К тому же на него бочку катят из-за сложности отладки и большого количества потенциальных ошибок (ненадежности).

Параллельное программирование в принципе сложное,
И тут ничего не сделаешь, надо просто учиться.

OpenMP и другие подобные вещи хороши тем, что работают
автоматом, плохо, что не всегда.
Лучшие вещи надо делать руками.

Так что у тебя собственно нет выбора, либо учись, либо не занимайся параллельным программированием.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754408
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть интервью с Дональдом Кнутом от 2008 года http://citforum.ru/gazeta/76/

Маэстро довольно резко отзывается о технологии. Для него Pipeline полезнее чем многопоточка.
Жаль что тема не была развита до асинков и корутинов.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754421
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТак что у тебя собственно нет выбораДа, в общем-то, у меня проблем и не было о_о
Я просто хотел узнать про почему потоки остаются в процессе? Судя по докам, потоки могут браться из пула потоков, а раз могу браться, значит туда могут и складываться
, вот хотел поподробнее узнать про пул.

Так-то я обычно, да, руками создаю треди (beginthreadex) и разруливаю мьютексами. Но тут понадобилось рабочий код, в котором есть некоторый контекст, разрезать на две параллельные части, одна из которых - запрос в базу. Всё хорошо, но контекст вокруг надо куда-то сложить, а потом достать. Т.е. надо организовывать вариативное хранилище данных с диспетчером. А усложнять код не хотелось. Пошёл почитать, что нового есть в плюсах по многопоточности. Нашёл async, который позволяет скинуть всю функцию вместе с сигнатурой в поток. Отлично!

MasterZivМне не нравится C++ Multi-threading из- за большого количества кода, за которым теряется суть программы.Это немного странно.
maytonДля него Pipeline полезнее чем многопоточка.Иногда без многопоточки гораздо хуже. Если, к примеру, есть реалтайм, в котором много вычислений и много рисований. Можно параллельно что-то одно считать, а другое рисовать. При этом легко можно управлять скоростью пересчёта и рендеринга отдельно. Тогда как в одном потоке, мало того, что медленнее, так ещё и сложнее это сделать.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754427
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,

это испорченный телефон.
MasterZiv запамятовал что теме полтора года и что он в ней уже участвовал и снова ответил топик стартеру.
Но сделал это с кривой разметкой цаитирования.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754542
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbИногда без многопоточки гораздо хуже. Если, к примеру, есть реалтайм, в котором много вычислений и много рисований. Можно параллельно что-то одно считать, а другое рисовать. При этом легко можно управлять скоростью пересчёта и рендеринга отдельно. Тогда как в одном потоке, мало того, что медленнее, так ещё и сложнее это сделать.
Я в этом услышал другое.

Большинство современных приложений. Особенно декстоп. Это event-driven. Яркий пример - основной цикл WNDPROC.
Обработали событие - и освободились. Фоновые задачи (догрузка картинок из интернетов) тоже имеют место.
Но они все - суть асинхронные вызовы.

Возьмем сеть идут сетевые пакеты. Строго последовательно. Приложение - сервис которое их обрабатывае
тоже может работать последовательно. Особенно для класса OLTP-систем.

За редким случаем когда идут расчеты в физике или обработка графики (рендеринг) или распознавание. Но и эти
задачи по большей части проходят со слабой concurrency. Фактически независимые задания - которые мержат
результат в какой-то один получатель.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754551
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯркий пример - основной цикл WNDPROC.

И ты хорошо знаешь что будет если в этом потоке начать делать что-то кроме цикла выборки
сообщений, а в обработку события запихать что-то тяжелее установки флагом и рассылки тех
самых event-ов.

maytonВозьмем сеть идут сетевые пакеты. Строго последовательно. Приложение - сервис
которое их обрабатывае тоже может работать последовательно.
Может, но при этом не нужно удивляться если UDP пакеты теряются, а скорость передачи
внезапно ниже, чем пропускная способность сети, поскольку необработанные пакеты
громоздятся в буферах, на них не отсылается ACK и передающая сторона начинает забивать
свои буфера, а потом и блокировать отправку.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754552
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLМне не нравится C++ Multi-threading из- за большого количества кода, за которым теряется суть программы. К тому же на него бочку катят из-за сложности отладки и большого количества потенциальных ошибок (ненадежности).

OpenMP не позволяет работать с циклами, у которых окончание итераций по условию (например, окончание файла или достижение заданного результата).

Intel Trading Blocks- нет литературы на русском, да и код превращается в адовы кирпичи.

Что посоветуете?


https://www.threadingbuildingblocks.org/
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754554
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmaytonЯркий пример - основной цикл WNDPROC.

И ты хорошо знаешь что будет если в этом потоке начать делать что-то кроме цикла выборки
сообщений, а в обработку события запихать что-то тяжелее установки флагом и рассылки тех
самых event-ов.
Я беру за основу 99% юзкейсов UI приложения. В них обычно простая логика. Конечный автомат
с быстрым срабатыванием баръеров.

Джобы и фоновые задания - это OK/ Я согласен. Обсуждается отдельно и тестируется.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754560
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovМожет, но при этом не нужно удивляться если UDP пакеты теряются, а скорость передачи
внезапно ниже, чем пропускная способность сети, поскольку необработанные пакеты
громоздятся в буферах, на них не отсылается ACK и передающая сторона начинает забивать
свои буфера, а потом и блокировать отправку.

Это неудачный пример. UDP изначально - протокол-камикадзе.
Протокол взаимодейтвия с DNS предполагает очень быструю реакцию (это +1) и нечуствительность
к одиночным потерям. Или системы вещания медийного трафика где пропажа кадра видео
не оказывает влияния на результат в целом.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754564
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

SSIS прекрасно умеет многопоточить несколько десятков потоков.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754570
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЭто неудачный пример. UDP изначально - протокол-камикадзе.
Плюсы у него тоже есть. Гугл уже 5 лет пилит свой протокол QUIC (Quick UDP Internet Connections)
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754775
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯркий пример - основной цикл WNDPROC.У WNDPROC очередь с приоритетами. И, наверно, было бы неплохо, если можно было свои вещи встраивать в эту очередь. О чём я: у меня запрос в базу через ADO, база далеко, основной поток встаёт в ожидании весь. В идеале, я отправил запрос, одно событие, получил ответ - второе. Ну, т.е. так и надо делать. Но самому. А WNDPROC это уже есть. Я вот тут пишу сейчас код быстро, так получилось. Хотел сделать индикацию ожидания запросов из базы, прогрессбар. Но основной поток занят, надо делать отдельный поток, который будет: 1. по таймеру обновлять прогресс, 2. выгребать и диспатчить WNDPROC, иначе прогресс будет не виден глазами... Но в результате вынес сами запросы в отдельные потоки, теперь можно наблюдать гонки заполнения продуктов в приложении по мере выполнения запросов, а индикация крутится по таймеру/событиям в основном потоке.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39754903
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbу меня запрос в базу через ADO, база далеко, основной поток встаёт в ожидании весь. В
идеале, я отправил запрос, одно событие, получил ответ - второе.

А найти и включить у ADO асинхронный режим - задача непосильная для среднего программиста,
ага.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39756938
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА найти и включить у ADO асинхронный режим - задача непосильная для среднего программиста,
ага.
Ага.
Ну, для начала, не хочется отдавать управление потоками ADO.
А во-вторых, я как-то не думал в эту сторону. Посмотрю, спасибо.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39757153
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbНу, для начала, не хочется отдавать управление потоками ADO.

Ты не поверишь, но для асинхронности в ADO не (всегда) используются потоки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39757589
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТы не поверишья поверю, просто дело в контроле, хочется это место самому контролировать.
...
Рейтинг: 0 / 0
Какой инструмент многопоточности используете?
    #39757974
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, пора кончать эти извращения.
...
Рейтинг: 0 / 0
19 сообщений из 69, страница 3 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Какой инструмент многопоточности используете?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]