|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик никогда он не успеет столько же прочитать, как в 20 потоков ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:38 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, для этих целей в стандарте у экземпляров std::atomic есть метод load() с порядком доступа acquire. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:39 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Необязательно даже знать о кэш-строках и протоколах когерентности. Достаточно понимать про "атомарность" и "изменчивость" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:41 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
rdb_dev Очень желательно это знать, чтобы правильно выравнивать массивные структуры данных в памяти, к которым необходим конкурентный доступ. Знать о существовании кэшей и протоколов когерентности всё так же не требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:46 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик Корутин - это просто функция с состоянием которую можно много раз вызывать. И все. так это обычная ф-я со static внутри ? итого, на опыте, как задачу то решать? Не обязательно. Корутина (со-программа) - это такой-себе хай-левел шаблон. Никто не обязывает нас делать ее функцией со статик. Можно ее сделать классом. Итератор например можно тоже считать ко-рутиной. Я знаю что Boost содержит поддержку корутин но я никогда не пользовался. Есть языки программирование где есть поддержка yield return. На них можно удобнее реализовывать такие функции. И я не знаю как решать твою задачу. Ведь ты ее толком нигде не озвучил. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:47 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
mayton Есть языки программирование где есть поддержка yield return. C++20, например mayton И я не знаю как решать твою задачу. Ведь ты ее толком нигде не озвучил. это наверное самая частая отмазка здесь многопоточно писать/читать контейнер с минимальными блокировками - чем не задача? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:49 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Dima TТы вроде написал что понял о чем речь, но похоже что нет. А уж что будет когда он доберётся до множественных читателей, которым хочется разрешить читать одновременно... Можно еще версионность обсудить. Обычно когда блокировки не позволяют решать задачу - вводят версионность. Даже для коллекций. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:52 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик дело в том, что везде пишут про блокировки на запись... а чтение блокировать якобы НЕ надо (в т.ч. и мультичтение вообще блокировать НЕ надо) автор if all readers then no locks required. if the number of reads is much larger than the number of writes - we might be able to use a readers/writer lock (std::shared_mutex) if most operations are writes, then per-element mutex strategy might work, если там запись на ровно 1 элемент но ты утверждаешь, что прям любое обращение к контейнеру надо блочить... Похоже ты сам не понимаешь то что процитировал. Если красное ты понял что всегда читать можно без блокировки, то это неверно. Читать можно без блокировки если никто не пишет, вообще никогда не пишет. Т.е. контейнер однажды заполнили и отдали потокам с обещанием что больше туда ничего не будет записано. бабушкин зайчик что же будет при мультичтении... Зеленым выделил, это как раз тот случай когда один писатель и много читателей. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:54 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
mayton И я не знаю как решать твою задачу. Ведь ты ее толком нигде не озвучил. ))) бабушкин зайчик это наверное самая частая отмазка здесь... многопоточно писать/читать контейнер - чем не задача? ну дак выдели ЧАСТЬ кода для блокировки. Рукописный контейнер полностью с нуля? Описание требований к контейнеру где? Что внутри контейнера? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:54 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Кто что думает про https://github.com/STEllAR-GROUP/hpx ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:55 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик многопоточно писать/читать контейнер с минимальными блокировками - чем не задача? авторНе бывает абстрактных сферических thread safe контейнеров в вакууме. И не может быть. Тех, кто употребляет такое слово применительно к контейнерам вообще, нужно нещадно бить батогами и ссылать в Сибирь )) https://rsdn.org/forum/cpp/5342417.all ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:58 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик это наверное самая частая отмазка здесь многопоточно писать/читать контейнер с минимальными блокировками - чем не задача? Вообще - не задача. На Stackoverflow такие вопросы модераторы сразу закрывают. Нет конкретики. Нет понятного применения. Сферические бенчмарки в вакууме чреваты тем что у всех будут разные результаты во первых. А во вторых эффективность решения будет зависеть от многих параметров. Например от пропорции читателей и писателей. И от того как долго писатель удерживает контейнер. И может быть даже от того какова вероятность столкнуться двум потокам в мониторе. И может быть от того сколько процессоров и ядер у тебя и сколько структур данных лежит в кешлиниях. И корутины тут пока непричем потому что у тебя не акторная архитектура а просто основанная на синхронности и конкуренции. Акторы - это про другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:03 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик mayton Есть языки программирование где есть поддержка yield return. C++20, например mayton И я не знаю как решать твою задачу. Ведь ты ее толком нигде не озвучил. это наверное самая частая отмазка здесь многопоточно писать/читать контейнер с минимальными блокировками - чем не задача? Если один контейнер заменить на десять, то вероятность того что нужный контейнер свободен увеличится в десять раз. Мало на 10 - дели на 100 и т.д. А вот можно ли заменить один на десять - это зависит от решаемой задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:05 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Dima T Похоже ты сам не понимаешь то что процитировал. ну найди там где-то утверждение, что надо блочить чтение там про это вообще ни слова автор- exactly one thread may update an element at any given time - no other thread may read an element while the write is updating it - more than one thread may read an element when no updates is in progress Dima T Если один контейнер заменить на десять, то вероятность того что нужный контейнер свободен увеличится в десять раз. Мало на 10 - дели на 100 и т.д. блокировать зоопарк контейнеров по одному - это лучше, чем отдельная блокировка пишущих ячеек в одном контейнере? PetroNotC Sharp бабушкин зайчик многопоточно писать/читать контейнер с минимальными блокировками - чем не задача? авторНе бывает абстрактных сферических thread safe контейнеров в вакууме. И не может быть. Тех, кто употребляет такое слово применительно к контейнерам вообще, нужно нещадно бить батогами и ссылать в Сибирь )) и что он имел ввиду под авторКстати, если "лочить-разлочить" настолько большая проблема, что аж "надоело", то не пора ли пересматривать архитектуру ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:22 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик Dima T Похоже ты сам не понимаешь то что процитировал. ну найди там где-то утверждение, что надо блочить чтение там про это вообще ни слова автор- exactly one thread may update an element at any given time - no other thread may read an element while the write is updating it - more than one thread may read an element when no updates is in progress Красным выделил что надо блочить чтение на время записи бабушкин зайчик Dima T Если один контейнер заменить на десять, то вероятность того что нужный контейнер свободен увеличится в десять раз. Мало на 10 - дели на 100 и т.д. блокировать зоопарк контейнеров по одному - это лучше, чем отдельная блокировка пишущих ячеек в одном контейнере? Так будет работать быстрее и лучше распараллеливаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:29 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик блокировать зоопарк контейнеров по одному - это лучше, чем отдельная блокировка пишущих ячеек в одном контейнере? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:35 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик и что он имел ввиду под авторКстати, если "лочить-разлочить" настолько большая проблема, что аж "надоело", то не пора ли пересматривать архитектуру ? 22388622 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:39 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик, по кругу ходим. Ты везде не прав (( ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:40 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Dima T бабушкин зайчик пропущено... ну найди там где-то утверждение, что надо блочить чтение там про это вообще ни слова - no other thread may read an element while the write is updating it Красным выделил что надо блочить чтение на время записи Здесь написано, что во время записи надо блокировать элемент, чтобы его никто прочитать не смог. Dima T бабушкин зайчик пропущено... блокировать зоопарк контейнеров по одному - это лучше, чем отдельная блокировка пишущих ячеек в одном контейнере? Так будет работать быстрее и лучше распараллеливаться. может быть на операциях записи... а как быть с операциями сортировки, группировки, джойнов и т.д. ? PetroNotC Sharp бабушкин зайчик, по кругу ходим. Ты везде не прав (( ну так сходи в другую тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:51 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
mayton Тебе надо писать только в матрицу С. ну и где проблема то? создал матрицу C внутри ф-и, сложил туда A и B и вернул если в этот момент в эти A/B -матрицы может идти запись, то заблочить + скопировать их внутрь ф-и (это же быстрее, чем блочить их на всё время перемножения) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:07 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Напиши код. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:09 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
mayton, ты когда задачу ставил, сам то её писал? Если да, то просто скажи, где там камень. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:10 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Коллеги, причем тут std::mutex ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:13 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Ну... самый первый камень - это как распараллелить. Особенно с учотом того что доступ к матрице Б идет неблагоприятным образом. Вертикальное сканирование double элементов - создает крайне неудачную игру с кешом. Какие будут предложения? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:16 |
|
|
start [/forum/topic.php?fid=57&msg=40107376&tid=2017163]: |
0ms |
get settings: |
19ms |
get forum list: |
26ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
87ms |
get topic data: |
17ms |
get forum data: |
3ms |
get page messages: |
570ms |
get tp. blocked users: |
3ms |
others: | 17ms |
total: | 750ms |
0 / 0 |