ProcessState::self()->startThreadPool();
1、startThreadPool()的主要作用是:(ProcessState.cpp)
调用spawnPooledThread( true )
2、spawnPooledThread这个函数里面主要作用是:(ProcessState.cpp)
启动一个线程sp<Thread> t = new PoolThread(isMain);
t->run(buf); //最终就会执行PoolThread类的threadLoop函数了。
3、PoolThread继承自Thread,里面有个run函数,主要作用是:(system\core\libutils\Threads.cpp)
调用函数createThreadEtc 或 androidCreateRawThreadEtc 创建线程_threadLoop
4、_threadLoop里面主要作用是:(system\core\libutils\Threads.cpp)
调用自己的threadLoop(self->threadLoop()),就是2步骤中的PoolThread里面的一个函数threadLoop()
5、threadLoop()函数里面主要作用是:(ProcessState.cpp)
调用IPCThreadState::self()->joinThreadPool(mIsMain),mIsMain第一次是true,代表主线程
6、用户线程被创建后,调用joinThreadPool:
IPCThreadState::self()->joinThreadPool(mIsMain)
joinThreadPool函数主要作用是:(IPCThreadState.cpp)
调用talkWithDriver(),其中会调用ioctl(mProcess->mDriverFD, BINDER_WRIT