线程与进程的概念和区别
基本概念
程序:程序是计算机指令的集合,它以文件的形式存储在磁盘上。不占用系统的运行资源。
进程:进程是一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动。进程是资源申请、调度和独立运行的单位,使用系统中的运行资源。
线程:线程是进程的一个实体,比进程跟小的能独立运行的基本单位,线程基本上不拥有系统资源。
区别:
1.一个程序至少有一个进程,一个进程至少有一个线程;
2.线程的划分尺度小于进程,是的多线程程序的并发性高;
3.进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率;
4.线程在执行过程中与进程有区别,每一个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口,但是线程不能独立执行,必须已存在应用程序中,有应用程序提供多个线程执行控制。
5.线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看成多个独立的应用,来实现进程的调度和管理以及资源分配。
6.同一个进程中的多个线程之间可以并发执行,线程可以与同进程中的其他线程共享数据,但拥有自己的占空间和独立的执行序列。
进程不执行任何东西,它只是线程的容器。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,此线程负责执行包含在进程的地址空间中的代码。即,真正完成代码执行的是线程,而进程只是线程的容器,或者说是线程的执行环境。
单个进程可能包含若干个线程。当创建一个进程时,操作系统会自动创建这个进程的第一个线程,称为主线程,此后,主线程可以创建其它线程。
进程由两部分组成:
1.操作系统用来管理进程的内核对象;
2.地址空间。
线程,由两部分组成:
1.线程的内核对象;
2.线程栈。
利用互斥对象实现线程同步。
互斥对象属于内核对象,它能够确保线程拥有对单个资源的互斥访问权。互斥对象包含一个使用数量,一个线程ID和一个计数器。