-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Перенос предложения: голоса +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);