1、线程是什么?进程是什么?二者有什么区别和联系?
(1)线程是进程中实施调度和分派的基本单位; 操作系统提供现成的目的就是为了方便高效地实现并发处理(进一步提高并发度)

(2)进程是程序的一次执行;进程是可以与其他计算并发执行的计算;进程是一个程序程序及其数据在处理器上顺序执行时发生的活动;进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位
两者的联系:

进程和线程都是操作系统所运行的程序运行的基本单元。

1、一个进程可以有多个线程,但至少有一个线程;而一个线程只能在一个进程的地址空间内活动。
2、资源分配给进程,同一个进程的所有线程共享该进程所有资源。
3、CPU分配给线程,即真正在处理器运行的是线程。
4、线程在执行过程中需要协作同步,不同进程的线程间要利用消息通信的办法实现同步。

区别:
(1)进程具有独立的空间地址,一个进程崩溃后,在保护模式下不会对其它进程产生影响。
(2)线程只是一个进程的不同执行路径,线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉。

2、什么是多线程?
多线程:是指从软件或者硬件上实现多个线程的并发技术。
多线程的好处:
(1)使用多线程可以把程序中占据时间长的任务放到后台去处理,如图片、视屏的下载
(2)发挥多核处理器的优势,并发执行让系统运行的更快、更流畅,用户体验更好
多线程的缺点:
(1)大量的线程降低代码的可读性;
(2)更多的线程需要更多的内存空间
(3)当多个线程对同一个资源出现争夺时候要注意线程安全的问题。

知乎上的说法

作者:南理汉子

开个QQ,开了一个进程;开了迅雷,开了一个进程。
在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。

所以运行某个软件,相当于开了一个进程。在这个软件运行的过程里(在这个进程里),多个工作支撑的完成QQ的运行,那么这“多个工作”分别有一个线程。

所以一个进程管着多个线程。

通俗的讲:“进程是爹妈,管着众多的线程儿子”…

作者:知乎用户

进程是应用程序的执行实例。比如说,当你双击的Microsoft Word的图标,你就开始运行的Word的进程。线程是执行进程中的路径。另外,一个过程可以包含多个线程。启动Word时,操作系统创建一个进程并开始执行该进程的主线程。
由于一个进程可以由多个线程,线程可以被认为是“轻量级”的过程。因此,一个线程和一个进程之间的本质区别在于,每一个用来完成的工作。线程用于小任务,而进程用于更多的’重量级’的任务 – 应用基本执行。
一个线程和进程之间的另一个区别是,在同一进程中的线程共享相同的地址空间,而不同的进程没有。因此线程可以读写同样的数据结构和变量,便于线程之间的通信。相反,进程间通信(IPC)很困难且消耗更多资源。
 
 
作者:Su9ar

比如说:一个老师出了一道题目给一个同学解答,这个同学可以看成是一个线程,为了解答的更快,再增加一个同学同时解答,就相当于增加了一个线程,以次类推。而解答的过程就可看成是进程。

5/10:修正一下最后一句

老师出题到同学解答,这整个过程可看成是一个进程,而不单是解答的过程。

 

欧阳乐燊

高一升高二是进程 语数外理化生是 线程

知乎用户:程序员

打一个通俗易懂的比方吧!

比如你去一个食堂吃饭。里面有A,B,C,D等一些窗口可以打饭菜或者米粉麻辣烫什么的。

但是每一个窗口又有打这些菜的师傅。

那么这些窗口就是进程。

那个那些窗口里面打菜的师傅就是线程。

这个食堂就是系统了。

系统去分配这些进程。

 

 

额外补充

协程只不过是同事并行多个任务而已,但是实际上其实是同步执行的,其中一个任务阻塞,其他的任务必定阻塞。

协程,线程,进程,异步,同步,并行,串行

协程,线程,进程,这种是多任务调度的形式,进程归操作系统管理。

同步,异步是程序阻塞和非阻塞执行的一种方式。

并行和串行就是任务执行是一起执行还是顺序执行。

 

更比较通俗易懂的

 1. 进程: 通俗理解一个运行起来的程序或者软件叫做进程
    1.1 每次启动一个进程都需要向操作系统索要运行资源,让进程中的线程去执行对应的代码,进程是操作系统分配资源的基本单位
    1.2 默认情况下一个进程只有一个线程,线程是依附在进程里面的, 没有进程就没有线程, 当在进程里面还可以创建多个线程
    1.3 如何理解进程: 把进程想成现实生活中的公司,公司可以给员工提供办公资源(办公桌椅,办公电脑等资源), 真正干活的是员工,所以员工可以想成线程,公司就是进程
2. 进程和线程的对比
    2.1 进程是操作系统资源分配的基本单位,每启动一个进程都需要向操作系统索要运行资源,默认一个进程只有一个线程,线程是依附在进程里面的
    2.2 线程是cpu调度的基本单位, 通过线程去执行进程中代码, 线程是执行代码的分支
    2.3 多进程开发比单进程多线程开发稳定性要强,但是多进程开发比多线程开发资源开销要大
    2.4 多进程开发某个进程死了不会影响其它进程的运行,但是多线程开发该进程死了那么这些线程都要进行销毁

并发: 任务数大于cpu的核数,多个任务轮流执行,由于cpu切换速度特别快,看起来像是一起运行,其实是假象。

并行:  任务数小于或者等于cpu的核数,那么多个任务是真正意义一起执行。

3. 进程、线程
    1.1 先有进程,然后进程可以创建线程,线程是依附在进程里面的, 线程里面可以包含多个协程
    1.2 进程之间不共享全局变量,线程之间共享全局变量,但是要注意资源竞争的问题
    1.3 多进程开发比单进程多线程开发稳定性要强,但是多进程开发比多线程开发资源开销要大
    1.4 多线程开发线程之间执行是无序的,协程之间执行按照一定顺序交替执行