unordered_map потокобезопасность

Я изменяю программу с одним потоком на многопоточную, используя библиотеку boost:thread. Программа использует unordered_map в качестве hasp_map для поиска. Мой вопрос:

В одно время многие потоки будут писать, а в другое время многие будут читать, но не читать и писать одновременно, т.е. либо все потоки будут читать, либо все будут писать. Будет ли это потокобезопасным и контейнер, предназначенный для этого? А если и будет, то действительно ли он будет параллельным и повысит производительность? Нужно ли использовать какой-то запирающий механизм?

Я где-то читал, что стандарт C++ говорит, что поведение будет неопределенным, но это все?

ОБНОВЛЕНИЕ: я также думал о Intel concurrent_hash_map. Будет ли это хорошим вариантом?

22
задан questions 13 March 2012 в 14:06
поделиться