Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.
2466 Discussions

Does concurrent_unordered_map::unsafe_erase invalidate iterators?

Glen_L_
Beginner
419 Views

I see that the 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.

Cheers

Glen Low

Pixelglow Software

0 Kudos
1 Reply
RafSchietekat
Valued Contributor III
419 Views

My advice is to add some tests to src/test/test_concurrent_unordered.cpp, submit this as a contribution, and ask to amend the documentation to remove any doubt. (I've had a quick look at the implementation, but it didn't seem obvious.)

0 Kudos
Reply