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

По поводу невалидных итераторов, после удаления элемента другим потоком -

правда?

17 ответов

10 просмотров

Зависит от контейнера, потоки тут не причем, подробнее в таблице https://en.cppreference.com/w/cpp/container

Не только другим потоком

Constantine- Автор вопроса
我が名はレギオン
Зависит от контейнера, потоки тут не причем, подро...

Окей. Допустим, я смогу отказаться от unordered_set в пользу set, тк добавление в него элементов не ломает итераторы. 1. Но, есть ли возможность проверить, что элемент, который я читаю не был удалён? 2. Или всё это не имеет смысла, тк операции изменения состояния контейнера не атомарные и бог знает, что произойдёт, если я попытаюсь создать итератор в этот момент изменения?

Constantine
Окей. Допустим, я смогу отказаться от unordered_se...

Операции чтения и записи должны быть синхронизированы, иначе выходит гонка

Constantine- Автор вопроса
Georgy Firsov
Операции чтения и записи должны быть синхронизиров...

Гонка, которая неизвестно чем закончится? Или всё-таки есть возможность с какими-то ограничениями не использовать синхронизацию?

Constantine
Гонка, которая неизвестно чем закончится? Или всё-...

Только читать из контейнера можно без синхронизации Но если при этом ещё и писать хочется, то синхронизация нужна обязательно Ну а вот удалил ты элемент, но при этом где-то ты его же считываешь. Ну и получится кирдык Или вставляешь один и тот же элемент в разных потоках...

Constantine
Да тоже не фонтан

А почему? Ну либо тогда на лок-фри пересаживаться. Но не факт, что будет эффективнее

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

А это что?

Constantine- Автор вопроса
atomic
а почему боитесь синхронизации?

Чтение и запись происходят достаточно активно

Constantine
Чтение и запись происходят достаточно активно

Ну так это один из поводов для синхронизации

Constantine
А это что?

А это специальные контейнеры, которые сами синхронизируются, но не мьютексами, критическими секциями, рв-локами и пр. А с помощью атомарных операций

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта