关于 并行与并发
多线程只有一个目的,就是更好的利用cpu资源。
并行:多个cpu或多台机器同时进行一段逻辑处理。比如并查集。
并发:多个程序在同一处理机运行,但同一时刻只有一个程序在运行。
线程与进程的关系
这两个名词不过是对应的cpu时间段的描述,只不过是颗粒度大小不同,进程包含线程。
进程就是上下文(程序的运行环境)切换程序执行时间的总和=cpu加载上下文+cpu执行+cpu保存上下文。
线程是什么?
比如运行一个程序A(分为a b c等多个块组合而成的),过程如下所示:
程序A加载上下文,开始执行A的a小段,然后执行b小段,再执行c小段,最后再保存A的上下文。
这里a b c是共享了A的上下文,这里abc就是线程,A就是进程。也就是说线程是共享了进程的上下文环境,是颗粒度更小的时间段。
通俗易懂的实际情景解释:
单进程单线程:一个人在一个桌子上吃菜。
单进程多线程:多个人在一个桌子一起吃菜。(多线程共享一个进程的上下文环境)
多进程单线程:多个人每个人在自己的桌子上吃菜。