多线程的加锁有关问题

多线程的加锁问题
用c/c++怎么对map的不同的值加锁啊,例如map有1,2,3,4。。。。当值是1时对map的1进行加锁,其他的线程还可以处理map的其它的值。请高手指教,谢谢了。

------解决方案--------------------
不可以的,map实现是红黑树,写的时候需要旋转的。多线程写的话,行为结果未知。
------解决方案--------------------
如果你没有插入操作,可以对每个值加一个锁,这样就没问题了,不过如果数据多系统资源消耗太大,实际上没必要这么细的锁,而且还不能插入。。。
------解决方案--------------------
map 有多少个值,定义多少个锁
C/C++ code

void changemap(int i)                                                               
{                                                                                   
    lock(mutex[i]);                                                                 
    change(map[i]);                                                                 
     unlock(mutex[i]);                                                                                                                         
}

------解决方案--------------------
探讨

引用:

引用:

map 有多少个值,定义多少个锁
C/C++ code

void changemap(int i)
{ ……


用户量很大,用这个不太好吧?

就我……