2017年12月28日 星期四

[Android] Autolock


  • 在 trace Android media player時, 常看到 function有些有加 _l suffix的, 有的沒有. e.g. prepare, prepare_l
    • 主要的差異在於是否有用 Mutex lock住
    • 但此時又看到神奇的 code
      • /frameworks/av/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp
      • status_t NuPlayerDriver::prepare() {
            ALOGV("prepare(%p)", this);
            Mutex::Autolock autoLock(mLock);
            return prepare_l();
        }
        
      • /frameworks/av/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp 因此會發出疑問, 這個 autoLock 是做什麼的? 定義卻沒有使用?
        • 簡單說, 就是利用 constructor跟 deconstructor 來呼叫 mutex lock 跟 mutex unlock
    • 而此處的 prepare_l 有 l結尾的應該就是指 lock後執行的程式碼

沒有留言:

張貼留言