5

I see that tbb::concurrent_unordered_map hews pretty close to std::unordered_map while being safe for concurrency. I also know that unsafe_erase is not concurrent-safe with insert etc. The iterator docs also state that any existing iterators are still valid with insert, find etc.

The question is, does unsafe_erase invalidate any other iterator than the one it is asked to erase?

std::unordered_map and std::map certainly have this behavior, but it's not specified in the concurrent_unordered_map docs anywhere.

4

1 に答える 1

5

tbb::unsafe_erase は他の反復子を無効にしません。これは、文書化する必要があるプロパティです。

他の反復​​子を無効にしない理由は、基礎となる実装が分割順序付きリストであり、反復子がそのリストを指しているだけだからです。

于 2013-11-07T17:03:51.020 に答える