Параллельный кеш - PullRequest
       4

Параллельный кеш

4 голосов
/ 07 июля 2011

Я ищу параллельную структуру кэша.Я использую PPL от Microsoft, поэтому у меня есть класс concurrent_unordered_map, но это не совсем то, что мне нужно.У меня есть хеш-значение, и мне нужно связать его с типом указателя или вернуть этот указатель, если он уже был в кеше.Я не использую стратегию кэширования LRU или MRU, и значения никогда не будут удалены, так что это больше похоже на одновременную памятку.

Было бы проще просто заблокировать существующую std::unordered_map?

1 Ответ

1 голос
/ 11 июля 2011

Я не знаю о Microsoft PPL. Я только что посмотрел на заголовочные файлы Intel Thread Building Blocks для Intel concurrent_unordered_map и его функция insert возвращает false в качестве второй части возвращаемой пары, когда ключ уже находится на карте.

Кажется, это именно то, что вам нужно. Сделайте вставку, и если она возвращает true, то это была новая вставка. Если он возвращает false, значит, он уже был на карте.

Редактировать: Кажется, здесь какая-то путаница. Я не имел в виду, что вы всегда должны запускать вставку. Я имел в виду, что вы должны искать значение и, если оно отсутствует, попробуйте вставить. Два или более потоков могут иногда состязаться на вставке, поэтому работа будет дублироваться, но это должно быть редким явлением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...