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

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

45 ответов

8 просмотров

Да

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 должно быть все-таки, не такими словами, но должно

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Всем привет. Возможно ли выполнить код ahk без интерпритатора? Имея только скомпилированный ехе файл? Например как функция eval
proxy
6
Карта сайта