每日一言:低头需要勇气,抬头需要实力!
欢迎一起讨论和学习,QQ:732258496 微信:15520726587
一.进程与线程
进程和线程是操作系统的基本概念,但是很抽象,不好理解,希望下面的解释可以让大家明白更多。
1.计算机或者手机的核心是CPU,它承担计算机所有的任务,它像一座工厂,时刻在运行;
2.单个CPU一次只能运行一次任务;
3.任一时间,CPU总是运行一个进程,其它进程处于非运行状态;
4.进程比作车间,线程就入车间中的工人,一个进程可以包括多个线程;
5.进程的内存空间是共享的,每个线程都可以使用这些共享内存,比如,车间的空间是工人共享的,学多车间工人是可以互相走动的;
6.“互斥锁”防止多个线程同事读写某一块内存区域。比如,每个房间的大小不同,有些房间最多只能容纳一个人,厕所,里面有人的时候,其他人就进不去了。解决办法,先到的人上锁,后到的人看到有锁,就在外面等着,等锁打开之后进去;
7.“信号量”保证多个线程不会冲突。比如,有些房间可以同时容纳 n 个人,如果大于 n ,那多出来的人只能在外面等着,好比某些固内存区域,只能供给固定数量的线程使用。解决办法:门口挂 n 把钥匙,进去的时候拿一把钥匙?,出来时再把钥匙放下,如果门口没有钥匙,就等着。
8.操作系统的设计,可以归纳为以下 3 点
a.以多进程形式,运行多个任务同时执行;
b.以多线程形式,单个任务可以分成多个部分运行;
c.提供协调机制,一方面防止进程和线程之间的冲突,另一方面允许线程和进程之间的资源共享。
二.IPC是什么?
指两个进程间数据交换的过程
三.为什么要用到IPC?
多进程会造成以下问题
1.静态成员和单例模式会失效;
2. 线程同步机制完全失效;
3.SharePerferences的可靠性降低;
4.Application会多次创建。
四.Android中IPC方式有哪些?
Intent
共享文件
SharePreferences
Binder--Messenger--AIDL
ContentProvider---AIDL
Serialable(SerID。如果没有的话,反序列会出错)和Parcelable
Socket 流字节
五.如何选择合适IPC方式?