|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
Вася УткинТ.е. обычный виндовый WaitForMultipleObjects() вообще не гарантирует, что поток его ожидающий продолжит выполнение через 1нс или 1мс или даже 1 секунду после завершения ожидаемого потока? Виндовс не гарантирует конкретное время, т.к. это не ОС реального времени, а ОС с вытесняющей многозадачностью. Если будут работать потоки с более высоким приоритетом, то твои будут ждать пока они закончат. Если будет работать много потоков с одинаковым приоритетом, то твой станет в очередь. Вобщем виндовс гарантирует что будет стараться дать проц твоему потоку как можно быстрее. В лучшем случае это наносекунды, в худшем как получится. Почитай Рихтера Глава 7. Планирование потоков Глава 9. Синхронизация потоков ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:40 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
std::async После работы async-ов, например, этой , обнаруживаю кучу потоков в процессе, хотя все они отработали. Это пул? Как почистить? Надо ли это делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 07:49 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
]Мне не нравится C++ Multi-threading из- за большого количества кода, за которым теряется суть программы. К тому же на него бочку катят из-за сложности отладки и большого количества потенциальных ошибок (ненадежности). Параллельное программирование в принципе сложное, И тут ничего не сделаешь, надо просто учиться. OpenMP и другие подобные вещи хороши тем, что работают автоматом, плохо, что не всегда. Лучшие вещи надо делать руками. Так что у тебя собственно нет выбора, либо учись, либо не занимайся параллельным программированием. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 09:08 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
Есть интервью с Дональдом Кнутом от 2008 года http://citforum.ru/gazeta/76/ Маэстро довольно резко отзывается о технологии. Для него Pipeline полезнее чем многопоточка. Жаль что тема не была развита до асинков и корутинов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 10:59 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
MasterZivТак что у тебя собственно нет выбораДа, в общем-то, у меня проблем и не было о_о Я просто хотел узнать про почему потоки остаются в процессе? Судя по докам, потоки могут браться из пула потоков, а раз могу браться, значит туда могут и складываться , вот хотел поподробнее узнать про пул. Так-то я обычно, да, руками создаю треди (beginthreadex) и разруливаю мьютексами. Но тут понадобилось рабочий код, в котором есть некоторый контекст, разрезать на две параллельные части, одна из которых - запрос в базу. Всё хорошо, но контекст вокруг надо куда-то сложить, а потом достать. Т.е. надо организовывать вариативное хранилище данных с диспетчером. А усложнять код не хотелось. Пошёл почитать, что нового есть в плюсах по многопоточности. Нашёл async, который позволяет скинуть всю функцию вместе с сигнатурой в поток. Отлично! MasterZivМне не нравится C++ Multi-threading из- за большого количества кода, за которым теряется суть программы.Это немного странно. maytonДля него Pipeline полезнее чем многопоточка.Иногда без многопоточки гораздо хуже. Если, к примеру, есть реалтайм, в котором много вычислений и много рисований. Можно параллельно что-то одно считать, а другое рисовать. При этом легко можно управлять скоростью пересчёта и рендеринга отдельно. Тогда как в одном потоке, мало того, что медленнее, так ещё и сложнее это сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 11:19 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
CEMb, это испорченный телефон. MasterZiv запамятовал что теме полтора года и что он в ней уже участвовал и снова ответил топик стартеру. Но сделал это с кривой разметкой цаитирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 11:30 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
CEMbИногда без многопоточки гораздо хуже. Если, к примеру, есть реалтайм, в котором много вычислений и много рисований. Можно параллельно что-то одно считать, а другое рисовать. При этом легко можно управлять скоростью пересчёта и рендеринга отдельно. Тогда как в одном потоке, мало того, что медленнее, так ещё и сложнее это сделать. Я в этом услышал другое. Большинство современных приложений. Особенно декстоп. Это event-driven. Яркий пример - основной цикл WNDPROC. Обработали событие - и освободились. Фоновые задачи (догрузка картинок из интернетов) тоже имеют место. Но они все - суть асинхронные вызовы. Возьмем сеть идут сетевые пакеты. Строго последовательно. Приложение - сервис которое их обрабатывае тоже может работать последовательно. Особенно для класса OLTP-систем. За редким случаем когда идут расчеты в физике или обработка графики (рендеринг) или распознавание. Но и эти задачи по большей части проходят со слабой concurrency. Фактически независимые задания - которые мержат результат в какой-то один получатель. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 14:13 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
maytonЯркий пример - основной цикл WNDPROC. И ты хорошо знаешь что будет если в этом потоке начать делать что-то кроме цикла выборки сообщений, а в обработку события запихать что-то тяжелее установки флагом и рассылки тех самых event-ов. maytonВозьмем сеть идут сетевые пакеты. Строго последовательно. Приложение - сервис которое их обрабатывае тоже может работать последовательно. Может, но при этом не нужно удивляться если UDP пакеты теряются, а скорость передачи внезапно ниже, чем пропускная способность сети, поскольку необработанные пакеты громоздятся в буферах, на них не отсылается ACK и передающая сторона начинает забивать свои буфера, а потом и блокировать отправку. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 14:27 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
AlekseySQLМне не нравится C++ Multi-threading из- за большого количества кода, за которым теряется суть программы. К тому же на него бочку катят из-за сложности отладки и большого количества потенциальных ошибок (ненадежности). OpenMP не позволяет работать с циклами, у которых окончание итераций по условию (например, окончание файла или достижение заданного результата). Intel Trading Blocks- нет литературы на русском, да и код превращается в адовы кирпичи. Что посоветуете? https://www.threadingbuildingblocks.org/ ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 14:28 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovmaytonЯркий пример - основной цикл WNDPROC. И ты хорошо знаешь что будет если в этом потоке начать делать что-то кроме цикла выборки сообщений, а в обработку события запихать что-то тяжелее установки флагом и рассылки тех самых event-ов. Я беру за основу 99% юзкейсов UI приложения. В них обычно простая логика. Конечный автомат с быстрым срабатыванием баръеров. Джобы и фоновые задания - это OK/ Я согласен. Обсуждается отдельно и тестируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 14:30 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovМожет, но при этом не нужно удивляться если UDP пакеты теряются, а скорость передачи внезапно ниже, чем пропускная способность сети, поскольку необработанные пакеты громоздятся в буферах, на них не отсылается ACK и передающая сторона начинает забивать свои буфера, а потом и блокировать отправку. Это неудачный пример. UDP изначально - протокол-камикадзе. Протокол взаимодейтвия с DNS предполагает очень быструю реакцию (это +1) и нечуствительность к одиночным потерям. Или системы вещания медийного трафика где пропажа кадра видео не оказывает влияния на результат в целом. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 14:36 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
AlekseySQL, SSIS прекрасно умеет многопоточить несколько десятков потоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 14:38 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
maytonЭто неудачный пример. UDP изначально - протокол-камикадзе. Плюсы у него тоже есть. Гугл уже 5 лет пилит свой протокол QUIC (Quick UDP Internet Connections) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 14:43 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
maytonЯркий пример - основной цикл WNDPROC.У WNDPROC очередь с приоритетами. И, наверно, было бы неплохо, если можно было свои вещи встраивать в эту очередь. О чём я: у меня запрос в базу через ADO, база далеко, основной поток встаёт в ожидании весь. В идеале, я отправил запрос, одно событие, получил ответ - второе. Ну, т.е. так и надо делать. Но самому. А WNDPROC это уже есть. Я вот тут пишу сейчас код быстро, так получилось. Хотел сделать индикацию ожидания запросов из базы, прогрессбар. Но основной поток занят, надо делать отдельный поток, который будет: 1. по таймеру обновлять прогресс, 2. выгребать и диспатчить WNDPROC, иначе прогресс будет не виден глазами... Но в результате вынес сами запросы в отдельные потоки, теперь можно наблюдать гонки заполнения продуктов в приложении по мере выполнения запросов, а индикация крутится по таймеру/событиям в основном потоке. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2018, 05:22 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
CEMbу меня запрос в базу через ADO, база далеко, основной поток встаёт в ожидании весь. В идеале, я отправил запрос, одно событие, получил ответ - второе. А найти и включить у ADO асинхронный режим - задача непосильная для среднего программиста, ага. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2018, 13:12 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovА найти и включить у ADO асинхронный режим - задача непосильная для среднего программиста, ага. Ага. Ну, для начала, не хочется отдавать управление потоками ADO. А во-вторых, я как-то не думал в эту сторону. Посмотрю, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 05:44 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
CEMbНу, для начала, не хочется отдавать управление потоками ADO. Ты не поверишь, но для асинхронности в ADO не (всегда) используются потоки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 13:56 |
|
Какой инструмент многопоточности используете?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТы не поверишья поверю, просто дело в контроле, хочется это место самому контролировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2019, 05:34 |
|
|
start [/forum/topic.php?fid=57&msg=39754552&tid=2017683]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 143ms |
0 / 0 |