Я успешно использую Concurrency::concurrent_unordered_map
в своей программе (это реализация, сделанная Microsoft).Это необходимо, потому что несколько вставок / обновлений для элементов и довольно редкие удаления выполняются одновременно.
Я знаю, что этот контейнер (как и все другие одновременные контейнеры) предоставляет небезопасный метод erase()
- для удаленияузел.
Какой, по вашему мнению, лучший способ сделать процесс стирания также безопасным для потоков?Это случается редко, как я уже сказал (только потому, что вмешательство пользователя), и мне бы не хотелось, чтобы критический раздел вводился каждый раз, когда я выполняю поиск в контейнере (или в этом отношении любые другие операции, такие как итератор).обход и обновление узла).Как вы думаете?Я также думал о механизме, основанном на событиях, но я не понимаю, как это применимо здесь.