最近用一个网上开源的c++库, 里面多object做引用计数,实现代码为
int count;
addRef(){
count++;
}
relaseRef(){
if (--count ==0){
delete this;
}
}
在多cpu的情况下,这个代码是有问题的,因为++,ii不一定是thread safe的
修改方法:
在x86中用asm的lock解决
可以参考ACE的aotimc_OP和linux中string的实现
int count;
addRef(){
count++;
}
relaseRef(){
if (--count ==0){
delete this;
}
}
在多cpu的情况下,这个代码是有问题的,因为++,ii不一定是thread safe的
修改方法:
在x86中用asm的lock解决
可以参考ACE的aotimc_OP和linux中string的实现