条款29:为“异常安全”而努力是值得的

考虑以下情况:

如果1,new失败的话,不但互斥锁mutex永远无法释放,而且会导致bgImage指向的内容无效,破坏了数据。

Mutex mutex; // for lock

void fun() {
    lock(&mutex);//取得互斥器
    bgImage = new Image();//1
    unlock(&mutex);//释放互斥器
}
//如果1,new失败的话会引发两个问题

使用以下方法,其实是条款13和14主张的内容:对象资源管理,会自动释放。Lock的构造函数回去拿到锁,在析构函数中会去释放。

Mutex mutex; // for lock

void fun() {
    Lock m1(&mutex);
    bgImage = new Image();//1
}

待补充其它细节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值