winapi — C ++ concurrent_unordered_map C ++ 11 Microsoft Использование unsigned long как ключ / функция HASH

Я использую Visual Studio 2012 в Windows 7 64 бит.

Мне нужно использовать параллельные структуры данных, потому что я буду использовать потоки. Я обнаружил, что у Microsoft есть несколько http://msdn.microsoft.com/en-us/library/dd504906.aspx#unordered_map

В общем, я должен обработать

получать данные в очередь …. обрабатывать, когда готовы … продолжать получать данные.

Я собираюсь использовать класс concurrent_unordered_map, предоставленный microsoft, чтобы иметь карту cuncurrent, в которой хранится класс с именем TouchInfo. Каждый объект TouchInfo имеет уникальный идентификатор (длинный без знака), который я использовал для извлечения объекта по мере необходимости его обновления.

В то же время мне нужно вставить TouchInfo в параллельную очередь …
Как только очередь попадает в число, я обрабатываю очередь … (другой поток)

1.
Мой первый вопрос: нужна ли мне специальная хеш-функция длинного без знака … Длинный без знака — это идентификатор (dwID), предоставляемый системой из системы multi-touch в Windows 7 (WinUser.h), поскольку у меня нет контроля я хочу убедиться, что моя хеш-функция оптимизирована.

typedef struct tagTOUCHINPUT {
LONG x;
LONG y;
HANDLE hSource;
DWORD dwID;
DWORD dwFlags;
DWORD dwMask;
DWORD dwTime;
ULONG_PTR dwExtraInfo;
DWORD cxContact;
DWORD cyContact;
} TOUCHINPUT, *PTOUCHINPUT;

Может быть, мне не нужно ничего делать и просто объявить

Я видел в Интернете, что некоторые люди используют Boost для создания хэша …

Любые входные данные и изменения в моем дизайне, полностью приветствуются …

Ответ на мой вопрос приветствуется!

Спасибо!

0

Решение

concurrent_unordered_map использования std::hash, которая имеет реализацию по умолчанию для unsigned long, Это будет хорошо работать прямо из коробки.

Хэш по умолчанию пытается быть оптимальным для большинства случаев использования, но нет никаких гарантий, потому что данные у всех разные. Определенно сравните его, прежде чем сходить с ума, глядя на хэш-функции (их много, и вы можете потратить много времени).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]