什么是进程,什么是线程,多线程与多进程的区别?

什么是进程,什么是线程,以及什么实际场景使用他们?

进程(Process):是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。简言之运行的程序就是进程。

线程(Thread) : 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

实际场景:
  首先明确多进程和多线程都能“同时实现多个任务”。假设要同时实现任务A和任务B,在实现的过程,分如下两种情况:

  如果任务A和任务B都需要自己拥有独立的资源才能往下执行那就必须是多进程。(任务A是盖大楼需要工人及建材,任务B是建桥梁也要工人及建材,那么这两个任务就需要两倍的资源才能同时进行)

  如果任务A和任务B都公用-套资源就能往下执行那就首选多线程。(任务A是烧开水泡茶需要水壶及加热工具,任务B是烧开水洗碗也需要水壶及加热工具,那么两个任务共用一套资源就能完成,没必要使用多进程)

多线程与多进程的区别

相同点:
    1、线程和进程都是处理多任务的,使得一份代码能同时执行多个任务;
    2、程序复杂性上升,任务之间如果有牵连还会涉及到同步与互斥相关技术;

不同点:
    1、多进程占用系统资源较多,多线程占用系统资源较少;
    2、每个进程拥有独立且完整的用户空间,每个线程自己只占用少量的栈空间,同时依赖所处进程的资源空间;
    3、进程因为其独立性,所以进程间通信需要依赖-一个公共的媒介(文件/内存),同进程下的多个线程公用进程资源,不存在通信这一说,但是要防止线程之间相互竞争资源(互斥/同步) ;
    4、多个进程间协同工作主要依赖通信及同步机制,多个线程间协同工作主要依赖斥及同步机制(而且进程与线程同步斥的控制方法完全不同);

猜你喜欢

转载自blog.csdn.net/weixin_50019298/article/details/114850160