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(); }
----------------------------------------------------------------

浙公网安备 33010602011771号