读书人

在多线程中使用map出现错误请各位前

发布时间: 2012-02-24 16:30:38 作者: rapoo

【求助】在多线程中使用map出现异常,请各位前辈帮忙,谢谢!
类中定义map <pair <ULONG, LONG> , CBaseClass*> ,启动线程时,将CBaseClass*作为参数传入,线程中调用函数对CBaseClass*指向的对象有操作,函数返回后发现map中多出一异常元素,哪位遇到过此类现象,请不吝赐教,多谢啊!~

PS:线程之间使用临界区同步

[解决办法]
按你的说法,你只传递了CBaseClass*,又没有碰过这个map,它怎么能被改呢。
你当然是再找找所有对这个map操作的地方。

[解决办法]
虽然stl本身就不是线程安全的,可是这个,呵呵,是不是什么地方修改了map啊?
[解决办法]
STL 没有考虑线程安全,
但是这里似乎和这个没有关系 。。。

检查其中针对 map 的操作
[解决办法]
虫子最后提的一点比较关键。

operator[] 访问时,如果 key 不存在,会插入这个 key,对应到一个被映射类型的默认值
[解决办法]
检查线程中调用函数对针对 map 的所有操作
特别是operator[] 访问操作,可尽量使用insert(),和find()函数来代替这种操作。
[解决办法]
看看你的线程函数
[解决办法]
插入看一下吧 。

读书人网 >C++

热点推荐