在 frameworks/base/libs/binder/ProcessState.cpp 的 startThreadPool() 函数中,
函数一开始,就声明了:
AutoMutex _l(mLock);
就去了解了一下,不复杂,但感觉很有思想。
在 frameworks/base/include/utils/threads.h 中,有:
可以看出,在构造函数中 mLock.lock() 加锁,在析构函数中 mLock.unlock() 解锁。
所以,对一个需要加锁的函数来说,我们只需要在函数开始处,声明这样 AutoMutex _l(mLock) 一个变量,它就会加锁,
等函数退出时,这样一个临时变量就会析构,就会解锁。