|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Что под капотом у std::mutex ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 22:16 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Загляни в соответствующий заголовок. Внезапно, там системный мутекс. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 22:23 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Там я вижу pthread_mutex_t ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 22:25 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
ЧиТД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 23:55 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
indigodye0 Что под капотом у std::mutex ? Главное, чтобы мьютекс имел описанные в стандарте свойства. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 10:07 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
indigodye0 Там я вижу pthread_mutex_t ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 10:09 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
А что у .shared_lock() под капотом - стоит ли его юзать для multiple read/single write? что скажете про pthread_rwlock* - они только для C ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 12:25 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик, shared lock, rwlock - это все под капотом имеет обычный мьютекс со счетчиком. Имеет смысл только при наличии медленных ридеров которые блокируют по чтению надолго. Если же ридеры быстрые и долго блокировку не держат, то имеет смысл использовать обычный мьютекс, т.к. у него меньше оверхед. Но конечно надо замерять в каждом конкретном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 13:29 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, а зачем вообще на чтение блокировать? ну если там не неск.секунд запись, а просто кинул в память и всё... в этот момент чтение опасно? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 15:54 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик а зачем вообще на чтение блокировать? Чтобы никто не писал пока читаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 16:00 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
а как лучше блокировать, когда, например, в одном запросе пишут, а в другом читают? 1. заблокировать весь пишущий запрос 2. заблокировать в пишущем запросе все пишущие ф-и (т.е. вручную каждую отблочить) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 17:50 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Если читателей много а писателей мало или они редко делают операции - то можно попробовать optimistic lock with timestamp. Я никогда не использовал это в С++. Только в Java. Но если получится - то есть шанс сильно облегчить нагрузку на mutex заменив ее атомарными операциями над timestamp. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 18:16 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
а там случайно нет такого инструмента, который можно 1 раз повесить на переменную, чтобы она автоматом блокировалась, когда в неё пишут? Т.е. просто перечислить все переменные и пусть блочит их автоматом всегда, самым оптимистичным образом... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 18:49 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Я думаю - нивелируется смысл мультипоточки. И кроме того старик Амдал топит за то чтобы мы как можно меньше создавали таких мест в коде. Кстати что в ней? Переменной? Счетчик? Можно атомик сделать. А если на этот счетчик смотрит человек (для статистики) то зачем ему видеть каждое обновление? Пускай каждый поток аккумулирует хотя-бы штук 10 итераций - потом сбрасывает изменения. Вобщем тут... с хитростью надо подойти. Тогда и будет перформанс. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 19:24 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
переменные разные, от цифры до строки mayton Пускай каждый поток аккумулирует, хотя-бы штук 10 итераций, потом сбрасывает изменения. а это как? Поток просто выполнил свой запрос, запустил нужные ф-и, и отключился... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 19:43 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик переменные разные, от цифры до строки mayton Пускай каждый поток аккумулирует, хотя-бы штук 10 итераций, потом сбрасывает изменения. а это как? Поток просто выполнил свой запрос, запустил нужные ф-и, и отключился... А... ну здесь нет highload. Так что можешь спокойно мутксы использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 20:05 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
ну запросов то может быть много в секунду... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 20:10 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Ну... сколько? 10? 100? Тут я думаю метрика будет такая. Как только все профилировщики показывают что все потоки ждут этот mutex - вот тогда и наступает highload. А до этого - можно не беспокоиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 20:18 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
там может быть всплеск, вплоть до миллионов можно же умышленно нагрузить запись ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 20:24 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик, Давай макет сюда. С мутексом. Чорт с тобой. Уламал ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 21:52 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
я ещё размышляю о том mutex или не mutex... ну есть 2 направления: чтение и запись в чтении ф-и для чтения в записи ф-и для записи их может быть много... запросов может быть много... за один запрос может быть затронуто несколько ф-й вопрос в том, как блокировать: бабушкин зайчик 1. заблокировать весь пишущий запрос 2. заблокировать в пишущем запросе все пишущие ф-и (т.е. вручную каждую отблочить) и как быть с чтением во время записи? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 22:01 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик и как быть с чтением во время записи? Для того и блокируют, чтобы во время записи никто не мог читать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 22:26 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Dima T бабушкин зайчик и как быть с чтением во время записи? Для того и блокируют, чтобы во время записи никто не мог читать. это только mutex делает или любая блокировка? разве нет раздельных блокировок на запись и чтение? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 22:30 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
бабушкин зайчик там может быть всплеск, вплоть до миллионов можно же умышленно нагрузить запись ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 03:50 |
|
Что под капотом у std::mutex
|
|||
---|---|---|---|
#18+
Не очень я понимаю ваших страданий ... Если счётчик меняется "вне нашего контроля", то на него вешается volatile, чтобы компилятор не больно умничал. Дальше есть два варианта: 1. Требуется "просто консистентное чтение"; 2. Требуется, чтобы "счётчик не менялся ещё несколько операций после чтения". Первое гарантируется аппаратурой, если переменная "не слишком велика". Найти сейчас неатомарный int возможно, но это - нетривиальная задача. Даже long, в основном - уже атомарный. А второе из исходной постановки - как-то не очень просматривается. И вот из этого когнитивного диссонанса "рождается секрет" вопрос: с чем боремся-то? И второй вопрос из того же диссонанса: если вторая задача, то зачем узнавать подкапотные подробности стандартных вещей вопросами на форуме вместо чтения документации? Или, всё-таки, профессионалы видят что-то такое, что недоступно понимаю тупых дилетантов? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 05:04 |
|
|
start [/forum/topic.php?fid=57&msg=40106947&tid=2017163]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
496ms |
get tp. blocked users: |
2ms |
others: | 350ms |
total: | 947ms |
0 / 0 |