liunx系统中进程和线程的理解

hello,大家好,今天在看高性能mysql中看到单线程工作字眼的时候,当时我的瞬间蒙圈了,,线程?线程是什么

进程不用说,我很熟悉的,他们俩个的关系又是如何呢?我找了一下资料,在百度上看到了一个形象的比喻,后来我自己总结了一个更形象的比喻。


一般来说,进程中至少一个线程,一个主线程和其他线程组成一个进程。多个线程的目的在于分享CPU的时间片,从而完成并行任务。

线程是CPU分配时间的单位,每一个线程对应于它在进程中的一个函数,也就是内存中的代码段,多个线程执行时CPU会根据它们的优先级分配时间,使它们完成自己的功能。

在说简单点:进程是活动的程序,是容器,线程在进程的容器中运行,是实际执行工作的代码。


百度网友形象的比喻:

        以沙箱为例进行阐述。一个进程就好比一个沙箱。线程就如同沙箱中的孩子们。孩子们在沙箱子中跑来跑去,并且可能将沙子攘到别的孩子眼中,他们会互相踢打或撕咬。但是,这些沙箱略有不同之处就在于每个沙箱完全由墙壁
和顶棚封闭起来,无论箱中的孩子如何狠命地攘沙,他们也不会影响到其它沙箱中的其他孩子。因此,每个进程就象一个被保护起来的沙箱。未经许可,无人可以进出。

我后来想了一下,有问了一下学java的 老大(化名),我的形象的比喻:

我的理解: (单线程模式)

进程当做 一条公路。

线程想像成为公路上的汽车。


如果有两个程序的运行的话, 就会出现两个条公路,他们的终点是内存,每个公路上的汽车可以乱跑乱撞,但是不会影响到其他的跑道上的汽车,但是他们俩个唯一做的是征用资源 去抢内存资源,其实这里是有优先级别的。


还有 一个程序执行时的顺序

连接 -->回话-->进程-->线程



我的比喻不知道大家能不能听明白的要表达的意思,这个东西就是比较抽象,需要多想一下啦。







你可能感兴趣的:(mysql,百度,程序,优先级,hello)