|
0 / 0 / 0
Регистрация: 04.06.2022
Сообщений: 24
|
||||||
Вопрос по многопоточности18.07.2025, 22:33. Показов 12863. Ответов 104
Метки concurrency (Все метки)
Здравствуйте, сейчас смотрю книги по многопоточности, возникло несколько вопросов. Почему-то слово "вопрос" нельзя полностью написать в заголовке.
1. Известно, что переменную bool (или int, неважно) может 1 раз записать только 1 поток, остальные только читают, зачем тогда делать её atomic? 2. Улетят ли вызовы notify_one/notify_all вникуда, если они много раз вызваны перед методами, которые ожидают cv? 3. Допустим, есть 5 потоков и есть общий вектор с огромным количеством элементов. Первый поток изменяет только элементы с идексами 0, 5, 10; второй поток - элементы с индексами 1, 6, 11; третий поток - элементы с индексами 2, 7, 12 и т.д. Правильно ли я понимаю, что переброска кэша и связанное с ним замедление программы все равно может происходить, потому что индексы, с которыми работает каждый поток, находятся по соседству? 4. Вот пример потокобезопасной очереди из книги Вилльямса. Зачем при сравнении head с tail в функции get_tail мы используем мьютекс, который тут же перестает блокироваться после того, как мы вышли из функции?
0
|
||||||
| 18.07.2025, 22:33 | |
|
Ответы с готовыми решениями:
104
Управление потоками в многопоточности Нужна информация о многопоточности |
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 866
|
|||
| 03.08.2025, 21:02 | |||
|
cdcodecpp, за всё обсуждение так и не понятно что у вас за задача.
0
|
|||
|
0 / 0 / 0
Регистрация: 04.06.2022
Сообщений: 24
|
||
| 03.08.2025, 21:22 [ТС] | ||
|
Некоторые вопросы остались нераскрытыми, если вы не знаете ответы или не хотите отвечать, то хотя бы не печатайте бесполезные сообщения и не оскорбляйте других участников, даже если считаете их сообщения неверными.
0
|
||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 866
|
||
| 03.08.2025, 21:36 | ||
|
Second Edition Copyright 2005 Allen B. Downey там как раз разжевывается теория многопоточности и все типовые и не типовые задачи с примерами и объяснениями.
0
|
||
| 03.08.2025, 22:44 | ||||||||
В свое время я довольно много (и увлеченно) этим занимался. Но вынужден признать что использование готовых тулзов практичнее и эффективнее. Ну это вечная проблема велик/готовое
В книге Вильямса подробно разбирается поведение для семантики relaxed, да, может прочитаться старое значение, причем даже перезаписанное несколько раз. Гарантируется только "atomicity" (мусора не будет). Полагаю (где это написано - не видел), что поведение для не-атомика точно такое же, т.е. отсутствие всякой синхронизации. Слушаю Вас, что там Вам "уж очень интересно"? ![]() Добавлено через 23 минуты
0
|
||||||||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 866
|
|||
| 03.08.2025, 23:22 | |||
|
Ulrich Drepper Red Hat, Inc." и про механизмы синхронизации кеша там расписано. но только для х86. а про другие архитектуры инфу приходится собирать из разрозненных источников. вот мне и интересно.
0
|
|||
| 04.08.2025, 01:07 | ||||
Добавлено через 36 минут cdcodecpp, а не написать ли Вам тестовый пример который показывает/доказывает что при отсутствии синхронизации могут быть прочитаны неверные данные? Возможно такое "практическое" изучение будет эффективнее
0
|
||||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 866
|
|
| 04.08.2025, 11:42 | |
|
cdcodecpp, проблема с санитайзерами при многопотоке в том что они не понимают что за задачу вы решаете. Ну может только в самых простых случаях.
Поэтому чтобы не делать одних и тех же ошибок и не полагаться на санитайзер каждый раз надо написать код который решает вашу задачу и потом только повторно его использовать и не менять. Например: есть mpmc очередь. Это базовый кирпичи для любой многопоточной программы, да и вообще это очень удобный примитив. Еë один раз написал, протестил (что тоже не тривиально) и больше не прикасается к ней. Следующий базовый кирпичик это пул потоков. Вот когда вы эти базовые части попереписываете несколько раз когда будете добавлять в них нужный вам функционал , выделите их в отдельную независимую от проекта библиотеку то тогда и появится некоторое понимание.
0
|
|
| 04.08.2025, 11:58 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 04.06.2022
Сообщений: 24
|
|||||
| 04.08.2025, 12:18 [ТС] | |||||
|
Добавлено через 2 минуты Добавлено через 1 минуту
0
|
|||||
|
фрилансер
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,029
|
||
| 04.08.2025, 12:42 | ||
|
Но рано или поздно всё равно выстрелит
0
|
||
|
0 / 0 / 0
Регистрация: 04.06.2022
Сообщений: 24
|
|||
| 04.08.2025, 21:58 [ТС] | |||
|
Добавлено через 2 минуты
0
|
|||
| 05.08.2025, 00:37 | |||||
Но если так, то чем самопал лучше? И если отвечать честно, то
А если не так, то зачем рекомендовать такой (тернистый) путь? Хотя, как говорили классики
0
|
|||||
|
Заблокирован
|
||
| 05.08.2025, 08:30 | ||
|
0
|
||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 866
|
|
| 05.08.2025, 12:32 | |
|
0
|
|
| 05.08.2025, 17:52 | ||
Ладно, много чего использую, часто выбор не мой а используемой либы. Конкретный пример: QThreadPool. Осваивается за полчаса без всякой подготовки. Простое и удобное использование, "кидаем в мешок" задачи, пул ими займется. Потом waitForDone, все посчитано. Знать о каких-то очередях, мутексах и.т.п. совершенно необязательно. Это "технология", зарядил - получил (результат);Ну и зачем пытаться с этим соревноваться? Так, показать свой (высокий) класс?
0
|
||
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 866
|
||
| 05.08.2025, 20:46 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 04.06.2022
Сообщений: 24
|
|
| 05.08.2025, 21:16 [ТС] | |
|
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 05.08.2025, 21:23 | |
|
0
|
|
| 05.08.2025, 22:51 | ||||
Но Вы слишком много хотите. Напр пункт 11 - хороший вопрос. И по смыслу хочется ответить "да, так, верно". Но... где это написано? Найти этому подтверждение в стандарте (или в авторитетной книге) очень непросто (если оно там вообще есть). А ответ типа "ну это я так думаю" не удовлетворит пытливых изучающих Да, и играть в "почемучку" легко и приятно, я тоже могу задать массу вопросов, напр- верно ли что с семантикой relaxed поведение то же что и для не-атомиков, во всяком случае для "atomistic" типов, напр int? - есть ли возможность/семантика синхронизировать только одну/данную переменную с целью макс производительности? То что в каких-то случаях атомики тормозят (пусть не смертельно) замечено давно И.т.п. И наконец то о чем Вам сказали все. У Вас есть опыт простого (житейского, бытового) "разпоточивания"? Чем упорнее Вы отмалчиваетесь - тем крепче подозрение что никакого. А если так, то Ваш план изучения многопоточности, мягко говоря, неудачен. Это типа хотите брать производные/интегралы не освоив таблицу умножения. Поэтому да, нежужели
0
|
||||
|
0 / 0 / 0
Регистрация: 04.06.2022
Сообщений: 24
|
|||
| 05.08.2025, 23:22 [ТС] | |||
|
А как ещё изучать многопоточность, если не с прорабатывания книги Вильямса? Наверное, есть какие-то книги с задачками или сайты, если знаете, посоветуйте, пожалуйста. Добавлено через 4 минуты
0
|
|||
| 05.08.2025, 23:22 | |
|
Помогаю со студенческими работами здесь
60
изучение многопоточности Объясните принцип создания многопоточности Менеджмент жесткого диска при многопоточности Реализация многопоточности в консоли Сравнение многопоточности С++11 и WinAPI Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|