并发访问 Map C++ 中的不同键
Concurrent access to different keys in Map C++
我有两个线程,其中一个线程 "A" 将键 X 插入映射,并且该线程 "A" 经常修改同一个键 X。
在特定点线程 "A" 完成对该键 X 的修改,然后线程 "B" 将读取键 "X" 并从中删除键 "X"地图.
当线程"B"读取和删除映射时,线程"A"将在映射中插入和写入一些其他键(不是同一个键X) 同时.
这样的话,地图需要同步吗?由于线程 "B" 确定键 "X" 已被线程 "A" 完全修改,并且不会再对该键 "X" 进行并发修改。
是的,您需要同步。
插入和删除可以更改映射的内部状态 class,这可以与其他类似操作重叠(即使它们针对不同的键)。
当线程 A 更新对象时,您不需要锁定地图。 Map 保证迭代器和对象指针在 insertions/deletions 下是稳定的,所以你的对象不会被触及。
我有两个线程,其中一个线程 "A" 将键 X 插入映射,并且该线程 "A" 经常修改同一个键 X。
在特定点线程 "A" 完成对该键 X 的修改,然后线程 "B" 将读取键 "X" 并从中删除键 "X"地图.
当线程"B"读取和删除映射时,线程"A"将在映射中插入和写入一些其他键(不是同一个键X) 同时.
这样的话,地图需要同步吗?由于线程 "B" 确定键 "X" 已被线程 "A" 完全修改,并且不会再对该键 "X" 进行并发修改。
是的,您需要同步。
插入和删除可以更改映射的内部状态 class,这可以与其他类似操作重叠(即使它们针对不同的键)。
当线程 A 更新对象时,您不需要锁定地图。 Map 保证迭代器和对象指针在 insertions/deletions 下是稳定的,所以你的对象不会被触及。