我有一个多线程应用程序,它使用共享数据结构,包装std :: map.
我知道STL不是线程安全的,同步所有线程是我的工作.另外我认为从列表中插入和删除元素不会使迭代器无效到其他元素.
所以我的代码中有每个元素的锁定,这可以防止两个线程读取/写入同一个元素.让两个线程处理两个不同的对象.它们持有对象的锁,因此其他线程无法修改/删除它们的对象.
但是第三个线程同时尝试删除第三个不同的对象.她已获得锁定,因此没有其他线程会尝试读取或删除它.
当其他线程正在读/写地图的其他元素时,从地图中删除元素是否是线程安全的?