android source code usual

::self() 一般表示单例 

sp<ProcessState> ProcessState::self()
{
    Mutex::Autolock _l(gProcessMutex); //自动锁,对gProcessMutex加锁,_l超出作用域自动对gProcessMutex解锁
    if (gProcess != NULL) {
        return gProcess;
    }
    gProcess = new ProcessState;
    return gProcess; //进程中的全局变量,以g开头,每个进程中有且仅有一个ProcessState
}

------------------------------------------

服务的初始化 ::instantiate()

AudioFlinger::instantiate();
int main(int argc __unused, char** argv)
{
   sp<ProcessState> proc(ProcessState::self());
   sp<IServiceManager> sm = defaultServiceManager();
   ALOGI("ServiceManager: %p", sm.get());
   AudioFlinger::instantiate();
   MediaPlayerService::instantiate();
   CameraService::instantiate();
   AudioPolicyService::instantiate();
   SoundTriggerHwService::instantiate();
   registerExtensions();
   ProcessState::self()->startThreadPool();
   IPCThreadState::self()->joinThreadPool();
}

----------------------------------------------------------------

 

posted @ 2015-04-18 14:27  牧 天  阅读(172)  评论(0)    收藏  举报