Wei*_*ang 1 c++ multithreading map
当我试图解决代码中的并发问题时遇到了这个问题.在原始代码中,我们只使用一个唯一的锁来锁定作为stl映射的缓存的写操作.但是对缓存的读操作没有限制.所以我想在读操作中添加一个共享锁,并保持对写操作的唯一锁.但是有人告诉我,由于它本身就存在一些内部缓存问题,在地图上进行多线程处理是不安全的.
有人可以详细解释原因吗?内部缓存有什么作用?
的实现std::map都必须满足通常的保证:如果您所有的做的是阅读,那么就不再需要外部synchrionization,但只要一个线程修改,
所有的访问必须同步.
我不清楚"共享锁"是什么意思; 标准中没有这样的东西.但是,如果任何一个线程正在写入,则必须确保没有其他线程可以同时读取.(像Posix这样的东西pthread_rwlock可以使用,但标准中没有类似的东西,至少不是我能找到的.)