Linux 进程和线程
基于 Linux 进程和线程设计软件系统的规则
- 为了最小化开销,将大量交互的线程放在 1 个进程中。
- 为了弹性和模块化,将交互受限的线程隔离到不同进程中。
- 关键线程应尽可能简单并且应该自己控制 1 个进程。
- 保持线程模块化并具有明确定义的交互。
- 不要滥用线程,创建线程和协调同步都有成本。
- 可以使用 OpenMP 为每个 CPU 核分配一个线程。
Android 每个应用程序都是一个独立的 Linux 进程
- 有助于模块化内存管理并确保一个应用程序崩溃不会影响整个系统。
- 有利于访问控制:进程只能访问其 UID 和 GID 允许的文件和资源。
- 减少了资源泄漏:当进程终止时包括内存和文件描述符在内的所有资源都被释放。
Android 每个进程中都有一组线程
- 一个线程管理和更新用户界面。
- 一个线程处理来自操作系统的信号。
- 几个线程管理动态内存分配和释放 Java 对象。
- 一个线程池使用 Binder 协议接收来自系统其他部分的消息。