Skip to content

ConcurrentHashMap для C++ #73

@apolukhin

Description

@apolukhin

Перенос предложения: голоса +13, -0
Aвтор идеи: f03n1x @BlazingPhoenix

В стандартной библиотеке есть достаточно много всяких инструментов для написания многопоточных приложений, но большинство из них достаточно низкоуровневые и требуют достаточно высокого уровня понимания логики работы многопточных систем. Практика многопоточного программирования показывает, что большинство возникающих проблем сводится к относительно небольшому набору задач, которые достаточно давно и качественно решены. Я предлагаю добавить в стандарт реализацию горизонтально масштабируемой хеш таблицы, способной эффективно работать под высокой нагрузкой от большого количества потоков.

Понятно, что можно взять обычную хеш таблицу и прикрыть ее от race condition при помощи mutex'a, но это приведет к тому, что у нас не будет возможности параллельно обращаться к данным внутри хеш таблицы. Более подробно про это можно почитать тут.

Я написал STL совместимую реализацию и разместил ее на github.

Данная имплементация дублирует интерфейс стандартного типа unordered_map и позволяет писать многопоточный код так же легко и удобно, как если бы он таким не был.

#include "concurrent_hash_map.hpp"
#include <string>

concurrent_unordered_map<std::string, int> m;
m.insert(std::make_pair("abc", 123));
assert(m["abc"] == 123);

Metadata

Metadata

Assignees

No one assigned

    Labels

    В работеНад идеей идёт активная работа в рамках РГ21

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions