并发和并行进程与线程

情怀

浅显的理解并发并行和线程进程

有一天在梦中梦到自己在参加面试,然后面试官问了这几个问题,我当时没有回答上来,然后导致了那场面试的失败,醒来后我在百度Google上查询了相关资料,并经过自己理解后写在了这里.

目录

  • 并行
  • 并发
  • 线程
  • 进程

1.并行

并行:就是计算机在同一时刻同时运行多个程序(一个程序可能有多个进程).

2.并发

并发:就是计算机在同一时间段运行多个程序,CPU会通过分配时间片的方式来确定哪一个程序使用cpu的资源,但是因为CPU计算速度很快,我们感觉是多个程序在同时运行.

早期的个人pc的处理器都是单核的,也就是说只有一个中央处理器(CPU),一个cpu同时可以运行的进程数为1,如果你的在这台pc上运行了多个程序或者一个程序有多个进程,那么cpu就会划分时间片,就是给每一个进程规定时间,一旦到达这个时间,那么这时候的cpu资源将交给下一个程序使用.

现在的个人pc都是多核的,有一个中央处理器有两个核心,相当于有两个CPU,那么同时处理的就可以使两个进程,一旦超过两个进程那么还是会通过分配时间片的方式来决定谁用cpu的资源.

3.进程

进程:我们的windows操作系统中都有任务管理器,任务管理器中的每一个任务就是一个进程(一个程序可能有多个进程,进程的数量取决于开发者).

4.线程

线程:每一个进程内部都有子任务,这个子任务叫做线程,每一个进程至少有一个线程.

线程是最小的执行单元,而进程由至少一个线程组成。如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间。

如果我们想要执行过个任务,我们可以使用一个进程多个线程的方式,还可以采用多进程的方式
第一种方式多个线程之间的切换也要根据分配时间片来执行,而且如果线程有一个出错,那么这个进程就会终止,那么其他的任务也就会被终止.
第二种方式实现多任务,即使有一个进程出错,只是这一个任务完成不了,其他任务还是
会被执行.
相比之下你可能认为多进程的方式要比多线程的方式要好,但是系统分配进程的时候开销很大,会影响运行的速度.

咦~~~~ 这是嘛呀!!!
0%