170 похожих чатов

Привет, подскажите, опреация поиска в мапе, потокобезопасна или нет?

45 ответов

6 просмотров

Да

akuma- Автор вопроса

Некорректный вопрос

Kirill Bolshakov
Да

Эм, если в другом треде стриггерттся ребалансировка, find вернёт корректное значение?

akuma- Автор вопроса
Kirill Bolshakov
Ребалансировка при поиске?

Нет, если делаешь вставку в другом треде или очищение, а первый тред вызывает файнд.

akuma
Почему это?

Потому что зависит от того как используется мапа

vladislav
Нет, если делаешь вставку в другом треде или очище...

Про вставку или очищение я разговор не вёл. Речь шла о поиске

akuma
Почему это?

Потому что вопрос не имеет смысла без контекста. Что при этом происходит в других потоках? Безопасна относительно чего?

akuma- Автор вопроса
Kirill Bolshakov
Про вставку или очищение я разговор не вёл. Речь ш...

все верно, это был конкретный вопрос, мапа не изменяется

Что ты понимаешь под "потокобезопасно" ?

akuma- Автор вопроса
Ilya Zviagin
Что ты понимаешь под "потокобезопасно" ?

ну там вроде одно понятие - при выполнении данной операции одновременно в нескольких потоках, я не получу UB.

akuma
ну там вроде одно понятие - при выполнении данной...

Но это называется по-другому, "СИНХРОНИЗИРОВАН".

akuma- Автор вопроса
Ilya Zviagin
Но это называется по-другому, "СИНХРОНИЗИРОВАН".

так говорят в общем, типа методы синхронизации потоков, а я говорил про операцию, и говорят, что операцаия безопасна гугл говорит тоже самое и как другие: http://web.mit.edu/6.031/www/fa17/classes/20-thread-safety/

akuma
так говорят в общем, типа методы синхронизации пот...

“without additional coordination” means that the data type can’t put preconditions on its caller related to timing, like “you can’t call get() while set() is in progress.”

akuma- Автор вопроса
Alexander Tulikov
“without additional coordination” means that the d...

Так суть одна, что вы мне пытаетесь доказать?

akuma- Автор вопроса
Alexander Tulikov
“without additional coordination” means that the d...

Текст стандарта "The library defines a number of atomic operations (Clause 29) and operations on mutexes (Clause 30) that are specially identified as synchronization operations."

akuma
Так суть одна, что вы мне пытаетесь доказать?

Суть в том, что thread-safe операция не может накладывать дополнительные ограничения на вызывающую сторону, типа не писать пока я читаю. Отсюда, очевидно, чтение из мутабельного контейнера не является thread-safe операцией.

akuma- Автор вопроса
Alexander Tulikov
Суть в том, что thread-safe операция не может накл...

Это очевидно. НО БЫЛО СКАЗАННО, что он НЕ ИЗМЕНЯЕТСЯ.

akuma
Это очевидно. НО БЫЛО СКАЗАННО, что он НЕ ИЗМЕНЯЕТ...

Сейчас не изменяется, потом начнёт изменяться, по твоему свойство операции тоже динамически меняться будет?

akuma
так говорят в общем, типа методы синхронизации пот...

Операция thread-safe - это значит, что при попеременном доступе к контейнеру из разных потоков все операции будут работать ОК, То есть, все операции - реэнтерантные. Но это НЕ значит, что контейнер не нужно защищать от ОДНОВРЕМЕННОГО доступа. Нужно, как и любые другие данные.

akuma
так говорят в общем, типа методы синхронизации пот...

А как эта писанина относится к С++ вообще?

akuma- Автор вопроса
Alexander Tulikov
Сейчас не изменяется, потом начнёт изменяться, по ...

Этого не подразумевет логика и архитектра программы!

akuma
Этого не подразумевет логика и архитектра программ...

вот тут точно требуется разделение понятий "реентрабельной" и "потокобезопасной" операции

Alexander Tulikov
Сейчас не изменяется, потом начнёт изменяться, по ...

Thread safety: All const member functions can be called concurrently by different threads on the same container. cppreference считает иначе

akuma- Автор вопроса
Kirill Bolshakov
Thread safety: All const member functions can be c...

это конечно какой-то кек-спор рили

Kirill Bolshakov
Thread safety: All const member functions can be c...

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

Alexander Tulikov
Это говорит, что они только с собой могут параллел...

Это значит, что потокобезопасно юзать const функции над контейнерами (это свойство контейнеров как раз). Нарушение потокобезопасности будет при использовании не-const функции. То есть свойство не меняется динамически как ты сказал, оно остаётся.

akuma
Этого не подразумевет логика и архитектра программ...

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

akuma
это конечно какой-то кек-спор рили

Давай перейдём из философо-терминологической плоскости в сугубо практическую. Привет, подскажите, опреация поиска в мапе, потокобезопасна или нет? Поиск в одном и том же словаре МОЖНО производить из разных потоков управления. При этом НУЖНО ГАРАНТИРОВАТЬ, чтобы во время поиска никто словарь не менял.

akuma- Автор вопроса
Ilya Zviagin
Давай перейдём из философо-терминологической плоск...

Да, это я прекрасно понятно. ПОЭТОМУ И НАПИСАННА КОНКРЕТНАЯ ОПЕРАЦИЯ!

akuma
Да, это я прекрасно понятно. ПОЭТОМУ И НАПИСАННА К...

Ну, так что ещё не ясно? Или может ещё кому-то не ясно?

akuma- Автор вопроса
Kirill Bolshakov
Это значит, что потокобезопасно юзать const функци...

Это значит, что в общем случае эти const функции не являются потокобезопасными.

Ilya Zviagin
Являются.

Ну смотри, ты с определением потокобезопасности операции выше в http://web.mit.edu/6.031/www/fa17/classes/20-thread-safety/ согласен?

Alexander Tulikov
Ну смотри, ты с определением потокобезопасности оп...

Нет. Даже читать не хочу. Оно как к С++ относится?

akuma- Автор вопроса
Ilya Zviagin
Нет. Даже читать не хочу. Оно как к С++ относится?

Это было вообще к теме то как именовать операцию синхронизированной или безопасной

Ilya Zviagin
Нет. Даже читать не хочу. Оно как к С++ относится?

Ну в стандарте С++ же нет определения потокобезопасной операции вроде как, поэтому надо его взять откуда-нибудь и применить к нашему случаю.

Alexander Tulikov
Ну в стандарте С++ же нет определения потокобезопа...

с C++11 должно быть все-таки, не такими словами, но должно

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Карта сайта