我发现tbb::concurrent_unordered_map
非常接近std::unordered_map
,同时对并发性是安全的。我也知道unsafe_erase
与insert
等并不是并发安全的。迭代器文档还声明任何现有的迭代器仍然对insert
,find
等有效。
问题是,确实unsafe_erase
使其他任何迭代器失效而不是要求它擦除吗?
std::unordered_map
和std::map
肯定有此行为,但未在concurrent_unordered_map
文档中指定。
答案 0 :(得分:4)
tbb :: unsafe_erase不会使其他迭代器失效。这是我们应该记录的属性。
它不会使其他迭代器失效的原因是底层实现是split-ordered list,而迭代器只是指向该列表。