webrtc关于锁的编程思想

如何使用锁很简单,但是如何用好锁就很困难了,当线程很多的时候总是由于自己忘记了初始化,忘记了调用解锁,或者由于程序异常而出现没有正常解锁的情况,导致庞大的程序出现各种问题,最常见的就是死了,而不是崩溃了。

下面根据我看到的webrtc代码,将webrtc的思想抽出来分享给大家,原来我曾在c++程序设计语言看到过这种思想,但是一直没当回事,感觉太小case了,大的项目谁会这样用,多写了多少代码呀。

主要有两个东西:

1,scopted_ptr,这个我前面介绍过

2,局部对象管理资源,实际上也介绍过。仍然类似于栈管理堆的思想。


有一个锁类CriticalSectionWrapper,见上文的webrtc的锁,它有一个工厂方法创建一个锁,返回指向锁的指针。

方法1:

class MyClass
{
private:
	CriticalSectionWrapper* critsec;
}
void MyClass::FuncNeedToHaveLock()
{
	critsec->Enter();
	//.....code
	critsec->Leave();
}


critsec这个锁指针会在MyClass类的构造函数分配内存,析构函数释放内存。

方法二:

对于堆资源的管理,可以采用智能指针,它

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值