如何优雅的写C++代码 Obotcha介绍(Synchronized实现)

这几天在调试socket多客户端问题,有很多地方需要用锁来保护,所以我们自然而然的用起了AutoLock。哈哈。代码会出现下面的情况:

{
    AutoLock l(mutexA);
    xxxx
}

{
    AutoLock l(mutexB);
    xxxxx
}

代码的逻辑上没啥问题,但是代码的观赏性上就比较差了,整个代码被莫名的好多的大括号隔断,而且要是要看具体的那把锁,我还需要看代码,不能像java那样清晰明了。如下代码,我们一看就知道整个锁的周期,以及具体是哪把锁。

synchronized(obj) {

    xxxxx
}

所以利用for语句,我在obotcha里面简单实现了一个Synchronized

#define Synchronized(X)  for(AutoLock __l__(X);X->isOwner();__l__.release())

实际上还是利用了autolock的原理

1.初始化时直接申请AutoLock

AutoLock __l__(X)

2.如果拿到锁,那么isOwner返回是true

X->isOwner()

3.第一次运行完成,释放autolock,这样isOwner就会返回false。运行结束~。

__l__.release()

使用起来基本和java相同:

Synchronized(mutex) {

   xxxx
}

唯一的区别是Synchronized的参数是lock,而java是object。哈哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值