博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AutoMutex
阅读量:4924 次
发布时间:2019-06-11

本文共 835 字,大约阅读时间需要 2 分钟。

Android里的C++代码经常会看到AutoMutex _l(mLock);

AutoMutex其实就是Thread的一种自动的互斥锁,定义在framework/base/include/utils/thread.h中;

/*

* Automatic mutex.  Declare one of these at the top of a function.
* When the function returns, it will go out of scope, and release the
* mutex.
*/
typedef Mutex::Autolock AutoMutex;

 

Autolock是Mutex的内嵌类(Java叫内部类),

// Manages the mutex automatically. It'll be locked when Autolock is

// constructed and released when Autolock goes out of scope.
class Autolock {
public:
    inline Autolock(Mutex& mutex) : mLock(mutex)  { mLock.lock(); }
    inline Autolock(Mutex* mutex) : mLock(*mutex) { mLock.lock(); }
    inline ~Autolock() { mLock.unlock(); }
private:
    Mutex& mLock;
};

 

看红色部分的注释就明白了,在函数代码中使用 AutoMutex 就可以锁定对象,而代码执行完AutoMutex所在的代码域之后,就自动释放锁,它的原理是充分的利用了c++的构造和析构函数~

转载于:https://www.cnblogs.com/flyme/archive/2011/09/19/2181418.html

你可能感兴趣的文章
ADB server didn't ACK(adb不能开启
查看>>
网页内容抓取
查看>>
分布式和集群的区别
查看>>
Python基础(三)
查看>>
Sql server在cmd下的使用
查看>>
【BZOJ 1019】 1019: [SHOI2008]汉诺塔 (DP?)
查看>>
织梦DEDECMS系统中文章内容为空 用SQL语句如何删除?
查看>>
swing
查看>>
Continuous integration
查看>>
前端知识点总结
查看>>
github 在ubuntu 使用--常用命令
查看>>
hl7 V2中Message Control ID的含义及应用
查看>>
IOS 4个容易混淆的属性(textAligment contentVerticalAlignment contentHorizontalAlignment contentMode)...
查看>>
iOS 修改textholder的颜色
查看>>
【资料】wod地城掉落
查看>>
C# FTPHelper(搬运)
查看>>
C#HttpHelper类1.3正式版教程与升级报告
查看>>
【转】Android 语言切换过程分析
查看>>
jpa 多对多关系的实现注解形式
查看>>
Android开发——View绘制过程源码解析(一)
查看>>