当前位置: 首页 > 网络应用技术

在粘合线池的启动过程的深度分析中

时间:2023-03-07 16:33:43 网络应用技术

  Binder是Android中的过程通信机制,主要使用CS体系结构模式。活页夹框架主要涉及4个字符客户端,服务器,服务管理器和活页夹。其中,客户端,服务器,服务管理器在用户空间中运行,并且粘合剂在内核空间中驱动。

  线程池是多线程处理的一种形式。在处理过程中,将任务添加到队列中,然后在创建线程后自动启动这些任务。线程池线程是背景线程。EATER使用默认的堆栈大小以使用默认优先级运行,并且在多级中- 线程单元。

  简而言之:线程池是创建一些线程,其集合称为线程池。

  我们知道,在创建新的应用应用程序过程之后,它将通过调用RuntimeInit类的静态成员函数来启动活页夹线程池。

  在活页夹线程池的启动过程中,几个关键功能主要称为:zygoteinentation---> onzygoteinit ----> startThreadPool。

  以下源代码分析主要基于Android5.0作为示例。

  由于zygoteinnation函数是由Java实施的代码,因此最终调用是C ++实现的JNI方法。以下代码来自System/FrameWorks/Base/Base/core/core/jni/jni/androidruntime.cpp文件

  Onzygoteinit函数位于源代码的位置:/frameworks/base/cmds/app_process/app_main.cpp文件。

  StartThreadPool系统在框架中实现

  在AtivelibsBinderPropessState.cpp文件中。

  在该过程中有一个独特的ProcessState对象,该对象支持过程间通信机制。当此过程state对象的成员函数startThreadPool函数称为第一个调用时,它将在当前过程中启动线程池,并且将bemthreadPoolStarted设置为true。

  粘合剂是Android底层中非常重要的机制。在实际项目调用过程中,我们只需要在应用程序应用程序中实现自己的活页夹本地对象,就像其他服务一样,我们只需要启动它。需要照顾。