读书人

vectorlt;A*gt;多线程调用的有关问题

发布时间: 2013-11-26 22:51:31 作者: rapoo

vector<A*>多线程调用的问题
class A{};
在class B中定义
vector<A*> planList;
fun中
planList.push_back(new A());
正常情况下打印的是:
B::fun start
B::initVector,planList.size=0
planList.size()=15
B::freeVector
多线程同时调用时,就会出现问题
B::fun start
B::fun start
B::initVector,planList.size=0
B::initVector,planList.size=0
planList.size()=30
planList.size()=30
b::freeVector
b::freeVector

为什么会出现这种情况呢,vector<A*> planList不是在栈上分配的吗,线程1的planList为什么还能push_back线程2的new A()呢?
[解决办法]
吧全部代码贴上来嘛,vector<A*> planList是放在栈上的,但是它属于类B的成员变量呀,如果实例化类B是一个全局对象或者静态对象,那两个线程就是操作的同一个planList了,还是要加锁的。
[解决办法]
加锁了没有???

读书人网 >C++

热点推荐