让我们简要谈谈进程、线程和协程

小夏 科技 更新 2024-02-02

要成为一名优秀的软件工程师,流程和线程是必须了解和掌握的知识点,不仅因为它们是计算机科学的基础知识,还因为知道如何在正确的时间使用它们可以提高程序的执行效率,即提高性能。

在了解进程和线程之前,我们先来谈谈程序,其实所谓的程序就是工程师编写的**集合,程序经过编译器或解释器的处理,转换成机器可以理解和执行的形式。

进程是执行并加载到内存中的程序。 进程也是操作系统分配的最小资源单位,可以从操作系统中获取,如CPU时间、内存等依此类推,这意味着进程在运行时消耗了多少 CPU 和内存。 下面是 macOS Activity Monitor 的截图,相信使用不管是哪个操作系统的读者都见过类似的界面,并且监视器列出了你电脑正在运行的应用程序,它们实际上是进程,你可以看到每个进程消耗的 CPU、CPU 时间和每个进程的独立 ID(PID)。

优点:每个进程都有自己独立的系统资源分配空间,不同进程之间不共享资源,因此无需对进程进行互斥操作。 缺点:建立流程和切换流程的上下文更耗费资源,并且流程之间的通信需求更复杂。 总结:一个程序已经写好了,但还没有执行,程序执行完后就变成了一个进程。

线程可以想象存在于进程中,一个进程中至少会有一个线程,前面说进程是操作系统分配的最小资源单位,线程是操作系统可以调度的最小单位,也就是说,实际执行任务的不是进程, 但是进程中的线程,一个进程可以有多个线程,其中多个线程可以共享进程的系统资源,并且该进程可以比作一个工厂。线程是工厂中负责实际执行任务的工人。

我认为,如果我们继续使用工厂和工人的比喻,这两个概念会更容易理解和记忆。

多处理就像设置许多工厂(通常是 CPU 的数量),每个工厂都有同时完成更多事情的优势。

另一方面,多线程将许多员工聚集在同一个工厂,其优点是有机会在相对较短的时间内完成相同的工作。

如前所述,在多线程中,不同的线程可以共享资源,如果两个线程同时访问或更改全局变量,则可能会出现同步问题。 在执行过程中争用资源时可能会发生死锁,因此在使用多线程时必须特别小心以避免这些情况。

并行并行是利用多个CPU来实现对并行处理任务的需求(即多个任务同时执行),并发是多个任务在争夺同一个CPU的资源,所以在一个时间点只会执行一个任务, 仅仅因为切换速度非常快,用户通常不会觉得任务实际上是在切换。

协程是一个用户模式的轻量级执行线程,协程的调度完全由用户控制。

想想进程中的线程,以及线程中的协程。 协程的调度完全由用户控制协程还将有自己的寄存器、上下文、堆栈等,协程的调度器控制当前执行的协程以及要阻止的协程。 如果协程卡住了,它会直接在用户端将另一个协程切换到这个线程继续执行,这样其他协程就不会被阻塞,从而可以有效利用资源,从而实现并发的概念。

相较于构建线程需要花费MB的内存,创建协程可以压到kB级,协程之间的切换绝对比线程之间的切换要快。

通过本文,我们已经谈到了进程、线程和协程的概念,但实际上,在使用多进程、多线程开发时需要考虑的因素很多,如果你不小心,可能会导致上面提到的race condition或者性能不升反降,所以在实践中还是要仔细考虑和验证的。

相似文章

    进程和线程之间的区别

    过程。进程是正在运行的程序 进程驻留在内存中 它是系统执行资源分配和调度的独立单元。每个进程都有自己的存储空间和系统资源。注意 进程 A 和进程 B 的内存是独立的,不共享。线。线程是进程中的单个顺序控制流,也可以理解为执行路径。单线程 进程包含顺序控制流 一个执行路径 多线程 一个进程包含多个顺序...

    让我们谈谈海洋

    年月日,洋河股份 元,创年内新低。这个时候,我认为洋河的投资者可以习唐代的文章。唐淑芳的帖子从岁左右就开始谈论洋河了,到现在已经年多了。过时的内容,主要是不会随时间变化的部分。比如白酒的基本知识,洋河的历史和现状,白酒行业的优势,如何看财务报告,如何面对市场波动等。这时候,相信会帮助你对持股有一定的...

    进程和线程之间有什么区别,它们之间有什么关系?

    进程是计算机中的基本操作单元,它表示正在执行的程序实体。每个进程都有自己的资源,例如内存空间 寄存器和文件句柄。操作系统计划不同的进程,以便可以同时执行计算机中的多个任务。线程是进程中的执行进程,是操作系统可以调度和执行的最小单元。一个进程可以包含多个线程,每个线程都有自己的数据,例如程序计数器 堆...

    让我们简单谈谈2024年的日食

    年的日食 话虽如此,那几天和叔叔一家人一起玩,虽然时间不多,但收获却很丰硕。我不仅品尝了很多美食,还欣赏了祖国的大江大山。说到食物,我忍不住多说了几句话。中国有着年的饮食文化,许多美食不仅美味,而且蕴含着丰富的文化内涵。在这次旅行中,我们品尝了很多正宗的食物。在舅舅的带领下,我们尝试了南京的鸭血粉丝...

    让我们来谈谈葡萄酒的分类

    葡萄酒是现代餐饮文化不可或缺的一部分,尤其是西餐。那么我们就来简单谈谈葡萄酒的和相应的合适食物搭配。红葡萄酒是在酿造过程中将葡萄皮和葡萄籽一起加工而成的葡萄酒,单宁含量丰富,是最常见的葡萄酒类型,其质量取决于原产地。红葡萄酒可分为干红 半干红 甜红等几大类,其特点是糖的发酵。通常干红酒和红酒与红肉 ...