进程,线程 记要
进程
(系统跑程序时,内存,GPU,网络等等都准备好,让CPU来进行操作,CPU操作的过程就是进程,过程中CPU可能读写内存数据,渲染画面,网络,都在进程中发生)
进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是能拥有资源和独立运行的最小单位,也是程序执行的最小单位,是应用程序运行的载体。每个进程有各自独立的一块内存,进程之间内存地址相互隔离。
线程
线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。
进程与线程的区别
1.线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
2.一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
3.进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;
4.调度和切换:线程上下文切换比进程上下文切换要快得多
线程优先级
IO密集型线程(等待较多,放弃自己部分时间片,系统喜欢)比CPU密集型线程优先级高(很少等待,时间片用完)
改变线程优先级
1.用户指定优先级
2.根据进入等待状态的频繁程度提升或降低优先级(操作系统完成)
3.长时间得不到执行而被提升优先级。
线程并发时确保线程同步
同步(synchronization)指一个线程访问数据时没,其他线程不得对同一个数据进行访问,即同一时刻只有一个线程访问该数据。同步最常见的方式就是使用锁(Lock),也成为线程锁。锁是一种非强制机制,线程访问数据或资源先获取锁,最后释放锁,在锁已经被占用时视图获取锁,线程会进入等待状态,直到锁被释放变为可用。
锁:二元信号量,多元信号量,互斥量,临界区,读写锁
二元信号量:单独线程访问
多元信号量:N个信号量允许N个线程并发访问,同一信号量可以由一个线程获取而由另一线程释放
互斥量:相对二元信号量,要求获取锁和释放所必须为同一线程
临界区:在互斥量基础上,他限定只有创建锁的进程才能获取锁
读写锁:允许多个线程对同一数据进行读操作,但是只有一个线程能进行写操作
这几天或者周末出一个自定义view 的效果。
对于生活理想,应该像宗教徒对待宗教一样充满虔诚与热情!