首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

多线程的加锁有关问题

2012-08-17 
多线程的加锁问题用c/c++怎么对map的不同的值加锁啊,例如map有1,2,3,4。。。。当值是1时对map的1进行加锁,其他

多线程的加锁问题
用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)
{ ……


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

就我……

热点排行
Bad Request.