powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что под капотом у std::mutex
25 сообщений из 131, страница 4 из 6
Что под капотом у std::mutex
    #40107414
indigodye0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
indigodye0
Коллеги, причем тут std::mutex ?

Да. Прошу прощения что мы тут нафлудили. Если мешает - я создам отдельный тред под умножение матриц.


Буду признателен
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107417
indigodye0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107418
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107419
indigodye0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость


Спасибо !
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107425
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
indigodye0Частые смены контекста потоков - приводят к частым инвалидациями кешей
К счастью их частота быстро падает с увеличением количества процессорных
ядер (а создавать больше потоков чем ядер не имеет смысла), а в поставленной
задаче с кэшем проблемы только у С.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107429
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
Dima T
пропущено...

Красным выделил что надо блочить чтение на время записи

Здесь написано, что во время записи надо блокировать элемент, чтобы его никто прочитать не смог.

Если мы продолжаем про std::контейнеры, то в этом случае элемент это контейнер, ты же не знаешь что там внутри меняется при записи, поэтому блокировка доступа целиком к контейнеру.

бабушкин зайчик
Dima T
пропущено...
Так будет работать быстрее и лучше распараллеливаться.

может быть на операциях записи... а как быть с операциями сортировки, группировки, джойнов и т.д. ?

От задачи зависит. Поэтому тебе написали что не бывает универсальных потокобезопасных контейнеров.
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107432
А давайте задачу по thread-safe-containers рассмотрим с позиции нескольких процессоров...
Если потоки (или даже процессы?) выделять по 1 на процессор, а не на ядро, чтобы исключить косяки кэша (главная проблема, как я понимаю), то что можно из этого выжать?

Варианты:
- у каждого процессора свой конкретный набор контейнеров, в которые другие не лезут
- 1 процессор только пишет, другой только читает
- внутри процессора каждый поток работает только со своим куском контейнера (поток1 = 0-9999, поток2 = 10000-19999 и т.д.)
- ещё?
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107438
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик, хитрец.
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107449
бабушкин зайчик
Если потоки (или даже процессы?) выделять по 1 на процессор

тут скорее не поток выделять, а задачу...
пул процессов, где 1 процесс = 1 процессор
приходит задача и получает из пула процесс (возможно даже процессор, отвечающий конкретно за эти задачи)
как-то так

в микросервисах у каждой задачи свой микросервис
но если они на одном сервере, то проблема с кэшами остаётся
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107451
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчикто что можно из этого выжать?

Ничего. Вывод всё тот же: если вам понадобился контейнер для которого не хватает
простой полной сериализации любого доступа, то либо что-то не так с вашей
консерваторией, либо задача очень и очень специфична, а потому следует пойти и
потренироваться на кошках прежде чем к ней приступать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107454
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
А давайте задачу по thread-safe-containers рассмотрим с позиции нескольких процессоров...
Если потоки (или даже процессы?) выделять по 1 на процессор, а не на ядро, чтобы исключить косяки кэша (главная проблема, как я понимаю), то что можно из этого выжать?

Проблема нескольких процов точно такая же как проблема нескольких ядер. На переброску данных между процами уходит больше времени, чем между ядрами, вот и вся разница.

Если рассуждаем про минимизацию тормозов на синхронизацию доступа к абстрактным данным, то не принципиально один проц многоядерный или несколько.
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107457
Dimitry Sibiryakov
простой полной сериализации любого доступа

что имеется ввиду?
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107462
Dima T
бабушкин зайчик
А давайте задачу по thread-safe-containers рассмотрим с позиции нескольких процессоров...
Если потоки (или даже процессы?) выделять по 1 на процессор, а не на ядро, чтобы исключить косяки кэша (главная проблема, как я понимаю), то что можно из этого выжать?

Проблема нескольких процов точно такая же как проблема нескольких ядер. На переброску данных между процами уходит больше времени, чем между ядрами, вот и вся разница.

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

ну чё-то микросервисы это не останавливает... А они ещё медленнее.
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107464
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчикчто имеется ввиду?

Внезапно: применение сабжа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107517
а если в контейнере одни инты, там нужна блокировка?
Я имею ввиду, если запись в ячейку с интом, его же нельзя как-то поменять, чтобы кто-то прочитал пол-инта?
Или там прям побитово читается/пишется в одной ячейке памяти без блокировки всей ячейки?
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107523
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thorn read для int зависит от аппаратуры, как уже сказано выше. Но проблема в
том, что из контейнера может исчезнуть сам int.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107524
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
бабушкин зайчик>при мультичтении...
При "мультичтении" используются, например, https://en.cppreference.com/w/cpp/thread/shared_mutex
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107527
ну да, про это уже писали
Anatoly Moskovsky
бабушкин зайчик,

shared lock, rwlock - это все под капотом имеет обычный мьютекс со счетчиком.
Имеет смысл только при наличии медленных ридеров которые блокируют по чтению надолго.
Если же ридеры быстрые и долго блокировку не держат, то имеет смысл использовать обычный мьютекс, т.к. у него меньше оверхед.
Но конечно надо замерять в каждом конкретном случае.

я слышал, что shared_mutex - самый нежелательный из mutex-ов...
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107529
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
rdb_dev
Очень желательно это знать, чтобы правильно выравнивать массивные структуры данных в памяти, к которым необходим конкурентный доступ.
Достаточно знать всего одно "магическое" число - размер кэш-строки.
Знать о существовании кэшей и протоколов когерентности всё так же не требуется.
Достоверно его можно узнать только выполнив инструкцию cpuid.
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107530
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
Dima T
пропущено...Красным выделил что надо блочить чтение на время записи
Здесь написано, что во время записи надо блокировать элемент, чтобы его никто прочитать не смог.
Весь необходимый функционал для реализации этого есть в std::atomic.
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107538
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
Достоверно его можно узнать только выполнив инструкцию cpuid.
До столба тоже докапываться будем или просто возьмём 64 в качестве магического значения?
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107552
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
а если в контейнере одни инты, там нужна блокировка?
Я имею ввиду, если запись в ячейку с интом, его же нельзя как-то поменять, чтобы кто-то прочитал пол-инта?
Или там прям побитово читается/пишется в одной ячейке памяти без блокировки всей ячейки?

Вот начинает проявляться конкретная задача :)

Но в общем случае все-равно нельзя, уточняй задачу. Ты же не говоришь в каком типе контейнера этот инт, как контейнер используется. Может пока ты его меняешь в одном потоке, другой в это время перемещает эту "ячейку" в другое место памяти.
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107556
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
бабушкин зайчик
пропущено...
Здесь написано, что во время записи надо блокировать элемент, чтобы его никто прочитать не смог.
Весь необходимый функционал для реализации этого есть в std::atomic.

Такого нет
Код: plaintext
1.
std::atomic<std::vector<int>> elements;
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107557
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
я слышал, что shared_mutex - самый нежелательный из mutex-ов...

Да, он сам по себе тормоз, т.к. счетчик читателей гоняется между всех читающих потоков.
...
Рейтинг: 0 / 0
Что под капотом у std::mutex
    #40107565
Dima T
Ты же не говоришь в каком типе контейнера этот инт

в дефолтном - vector
используется по назначению - инты пишутся, инты читаются
Dima T
Может пока ты его меняешь в одном потоке, другой в это время перемещает эту "ячейку" в другое место памяти.

ну ячейка опустеет, в общем-то это же не проблема...
или он может читануть между копированием и удалением?
...
Рейтинг: 0 / 0
25 сообщений из 131, страница 4 из 6
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что под капотом у std::mutex
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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