01_认识进程和线程
Posted 点九先生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01_认识进程和线程相关的知识,希望对你有一定的参考价值。
进程让操作系统的并发性成为了可能,而线程让进程的内部并发成为了可能。
进程是操作系统进行资源分配的基本单位,而线程是操作系统进行调度的基本单位。
1、为什么不用多进程实现并发?
多进程的方式也可以实现并发,但进程是相互独立的运行环境,进程间的通信比较复杂,线程是进程内的一个独立运行的任务,线程间使用共享资源进行通信相对容易。进程是重量级的,多进程并发开销较大,而线程是轻量级的,多线程并发开销更小。
2、为什么要用多线程实现并发?
为了解决负载均衡问题,充分利用CPU资源.
为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而不互相干扰.
为了处理大量的IO操作时或处理的情况需要花费大量的时间等等,
比如:读写文件,视频图像的采集,处理,显示,保存等
3、进程和线程的区别?
进程是一个独立的运行环境,进程单独占有一定的内存地址空间,而线程是在进程中执行的一个任务。
他们两个本质的区别是是否单独占有内存地址空间及其它系统资源(比如I/O)
可靠性:一个线程的崩溃可能会影响整个程序的崩溃,稳定性低;一个进程出现问题不影响其他进程,稳定性高。
开销大小:线程只需要寄存器和栈信息,开销小;进程的创建和销毁不仅需要保存寄存器和栈信息,还需要资源的调度回收以及页面调度。
内存隔离:线程共享数据来自所属进程的所占有的内存地址和系统资源,共享数据简单,同步数据复杂。进程存在内存隔离,数据是分开的,数据共享复杂数据同步简单。
4、线程是不是越多越好?
CPU通过为每个线程分配CPU时间片来实现多线程机制。CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。上下文切换通常是计算密集型的,意味着此操作会消耗大量的 CPU 时间,故线程也不是越多越好。
以上是关于01_认识进程和线程的主要内容,如果未能解决你的问题,请参考以下文章