|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
mayton indigodye0 Коллеги, причем тут std::mutex ? Да. Прошу прощения что мы тут нафлудили. Если мешает - я создам отдельный тред под умножение матриц. Буду признателен ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:17 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
По теме матриц - прошу всех сюда Ускорить умножение квадратных матриц (продолжение темы с mutex) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:22 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
mayton По теме матриц - прошу всех сюда Ускорить умножение квадратных матриц (продолжение темы с mutex) Спасибо ! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:22 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
indigodye0Частые смены контекста потоков - приводят к частым инвалидациями кешей К счастью их частота быстро падает с увеличением количества процессорных ядер (а создавать больше потоков чем ядер не имеет смысла), а в поставленной задаче с кэшем проблемы только у С. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:26 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик Dima T пропущено... Красным выделил что надо блочить чтение на время записи Здесь написано, что во время записи надо блокировать элемент, чтобы его никто прочитать не смог. Если мы продолжаем про std::контейнеры, то в этом случае элемент это контейнер, ты же не знаешь что там внутри меняется при записи, поэтому блокировка доступа целиком к контейнеру. бабушкин зайчик Dima T пропущено... Так будет работать быстрее и лучше распараллеливаться. может быть на операциях записи... а как быть с операциями сортировки, группировки, джойнов и т.д. ? От задачи зависит. Поэтому тебе написали что не бывает универсальных потокобезопасных контейнеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:32 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
А давайте задачу по thread-safe-containers рассмотрим с позиции нескольких процессоров... Если потоки (или даже процессы?) выделять по 1 на процессор, а не на ядро, чтобы исключить косяки кэша (главная проблема, как я понимаю), то что можно из этого выжать? Варианты: - у каждого процессора свой конкретный набор контейнеров, в которые другие не лезут - 1 процессор только пишет, другой только читает - внутри процессора каждый поток работает только со своим куском контейнера (поток1 = 0-9999, поток2 = 10000-19999 и т.д.) - ещё? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:37 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик, хитрец. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:42 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик Если потоки (или даже процессы?) выделять по 1 на процессор тут скорее не поток выделять, а задачу... пул процессов, где 1 процесс = 1 процессор приходит задача и получает из пула процесс (возможно даже процессор, отвечающий конкретно за эти задачи) как-то так в микросервисах у каждой задачи свой микросервис но если они на одном сервере, то проблема с кэшами остаётся ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 16:00 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчикто что можно из этого выжать? Ничего. Вывод всё тот же: если вам понадобился контейнер для которого не хватает простой полной сериализации любого доступа, то либо что-то не так с вашей консерваторией, либо задача очень и очень специфична, а потому следует пойти и потренироваться на кошках прежде чем к ней приступать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 16:04 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик А давайте задачу по thread-safe-containers рассмотрим с позиции нескольких процессоров... Если потоки (или даже процессы?) выделять по 1 на процессор, а не на ядро, чтобы исключить косяки кэша (главная проблема, как я понимаю), то что можно из этого выжать? Проблема нескольких процов точно такая же как проблема нескольких ядер. На переброску данных между процами уходит больше времени, чем между ядрами, вот и вся разница. Если рассуждаем про минимизацию тормозов на синхронизацию доступа к абстрактным данным, то не принципиально один проц многоядерный или несколько. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 16:06 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov простой полной сериализации любого доступа что имеется ввиду? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 16:12 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Dima T бабушкин зайчик А давайте задачу по thread-safe-containers рассмотрим с позиции нескольких процессоров... Если потоки (или даже процессы?) выделять по 1 на процессор, а не на ядро, чтобы исключить косяки кэша (главная проблема, как я понимаю), то что можно из этого выжать? Проблема нескольких процов точно такая же как проблема нескольких ядер. На переброску данных между процами уходит больше времени, чем между ядрами, вот и вся разница. Если рассуждаем про минимизацию тормозов на синхронизацию доступа к абстрактным данным, то не принципиально один проц многоядерный или несколько. ну чё-то микросервисы это не останавливает... А они ещё медленнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 16:18 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчикчто имеется ввиду? Внезапно: применение сабжа. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 16:19 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
а если в контейнере одни инты, там нужна блокировка? Я имею ввиду, если запись в ячейку с интом, его же нельзя как-то поменять, чтобы кто-то прочитал пол-инта? Или там прям побитово читается/пишется в одной ячейке памяти без блокировки всей ячейки? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 18:41 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Thorn read для int зависит от аппаратуры, как уже сказано выше. Но проблема в том, что из контейнера может исчезнуть сам int. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 18:57 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик>при мультичтении... При "мультичтении" используются, например, https://en.cppreference.com/w/cpp/thread/shared_mutex ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 18:59 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
ну да, про это уже писали Anatoly Moskovsky бабушкин зайчик, shared lock, rwlock - это все под капотом имеет обычный мьютекс со счетчиком. Имеет смысл только при наличии медленных ридеров которые блокируют по чтению надолго. Если же ридеры быстрые и долго блокировку не держат, то имеет смысл использовать обычный мьютекс, т.к. у него меньше оверхед. Но конечно надо замерять в каждом конкретном случае. я слышал, что shared_mutex - самый нежелательный из mutex-ов... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 19:04 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Basil A. Sidorov rdb_dev Очень желательно это знать, чтобы правильно выравнивать массивные структуры данных в памяти, к которым необходим конкурентный доступ. Знать о существовании кэшей и протоколов когерентности всё так же не требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 19:05 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик Dima T пропущено...Красным выделил что надо блочить чтение на время записи ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 19:09 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
rdb_dev Достоверно его можно узнать только выполнив инструкцию cpuid. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 19:40 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик а если в контейнере одни инты, там нужна блокировка? Я имею ввиду, если запись в ячейку с интом, его же нельзя как-то поменять, чтобы кто-то прочитал пол-инта? Или там прям побитово читается/пишется в одной ячейке памяти без блокировки всей ячейки? Вот начинает проявляться конкретная задача :) Но в общем случае все-равно нельзя, уточняй задачу. Ты же не говоришь в каком типе контейнера этот инт, как контейнер используется. Может пока ты его меняешь в одном потоке, другой в это время перемещает эту "ячейку" в другое место памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 20:31 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
rdb_dev бабушкин зайчик пропущено... Здесь написано, что во время записи надо блокировать элемент, чтобы его никто прочитать не смог. Такого нет Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 20:39 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик я слышал, что shared_mutex - самый нежелательный из mutex-ов... Да, он сам по себе тормоз, т.к. счетчик читателей гоняется между всех читающих потоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 20:40 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Dima T Ты же не говоришь в каком типе контейнера этот инт в дефолтном - vector используется по назначению - инты пишутся, инты читаются Dima T Может пока ты его меняешь в одном потоке, другой в это время перемещает эту "ячейку" в другое место памяти. ну ячейка опустеет, в общем-то это же не проблема... или он может читануть между копированием и удалением? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 21:18 |
|
|
Start [/forum/topic.php?fid=57&msg=40107527&tid=2017163]: |
0ms |
get settings: |
15ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
44ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
546ms |
get tp. blocked users: |
0ms |
others: | 157ms |
total: | 776ms |
0 / 0 |