大家好,我是炸鱼。
今天的演员是工程师的强制性技能,也就是说:“珊瑚和线程之间有什么区别和联系?”
有必要理解线程,解释Coroutine并解释两者之间的差异,但是由于提到线程,它将不可避免地涉及该过程。
希望引起一些想法。
该过程是运行程序上操作系统的抽象。该过程是资源分配的最小单元。
为什么要坦率地说“过程”,这是为了合理地挤压CPU的性能以及分配操作的时间。
在计算机中,其计算的核心是CPU,该CPU负责所有相关的工作和资源。单个CPU一次只能运行一个任务。如果流程运行,采用唯一的CPU是非常不合理的完全地。
那么,为什么要挤压CPU的性能?因为CPU太快,太快,太快,寄存器只能追逐他的脚步,而挂在公共汽车上的RAM和其他设备甚至更加不可预测。
如果您始终运行过程任务,将会有一个现象。也就是说,任务不一定总是执行“计算”任务。网络调用可能被执行和阻止。CPU不会浪费它吗?
这具有多个进程,多个CPU,多个进程。Multi -Processes是指可以同时执行多个进程的计算机系统。从一个过程到另一个过程的转换由操作系统内核管理。通常,多个软件同时运行。
对于多个流程,可以同时在操作系统上运行多个进程。那么为什么要有一个过程和线程?
原因如下:
每个人都将视线转向了这一过程。您可以在此过程中做某事吗?
一个过程可以由多个称为线程的执行单元组成。每个过程都在该过程的上下文中运行,共享相同的代码和全局数据。
多个过程中有更多的线程。与多流程相比,数量线程更容易共享数据。切换到上下文通常比过程更有效。
原因如下:
Coroutine是用户模式的线程。从总体上讲,创建公司时,将从该过程的过程中分配一部分内存作为Coroutine的堆栈。
螺纹堆栈具有8 MB,Coroutine堆栈的大小通常只有KB,并且Go Language Coroutine更加夸张,只有2-4KB,这很轻巧。
根据维基百科的说法,马尔文·康威(Malvin Conway)在1958年发明了“ Coroutine”一词,并用于建立装配程序。Coroutine的最初出版说明于1963年出版。
也就是说,历史上有一个“ Coroutine”,然后是一些“线程”。根据Coroutine添加堆栈和其他功能后,该线程会扩展。
但是,为什么Coroutine从一开始就开始呢?这很难验证,并且概率与60年前计算机年龄的背景有关。
如今,人们进一步将企业日程安排的逻辑提取为“等待io,放开,io完成”。在此基础上,人们发现Coroutine的方式可以在多线程环境中解决许多代码逻辑“混乱”。
现在,该线程似乎已经很好地填补了该过程的遗憾,为什么您出现了另一个“ Coroutine”?它反复制作轮子吗?
Coroutine的优势(通过InfoQ @八)如下:
Coroutine本质上是用户状态中的线程,因此有人说Coroutine是“光线”,但是我们必须区分用户模式和内核状态之间的差异,这非常重要。
在最终分析中,遇到“什么是校正,公司与线程之间的差异和联系?”在每日或采访中?“访调员将再次介绍过程,线程和coroutines。
为了促进记忆和解释,最好推荐每个与故事结合的人。这可以提及Ruan Yifeng翻译的“过程和线程的简单解释”,这将带来很多好感。
最关键的部分是,旋点和线程之间有什么区别和联系?
我们可以通过引入文章的引入来解释Coroutine->线程的历史过程。然后进一步比较Coroutine和线程的优点和缺点,这可以更好地解释差异和联系。
更好的部分可以解释基本概念和差异,并进一步扩展您采访的立场。例如,如果是GO语言,则可以介绍GO Language Coroutine的特定应用程序和实现。
毕竟,Go语言可以轻松地开放数十万个没有波浪的冠端。这可以更好地反映您对知识和线程的深度和广度应用,而不是简单地反映出背部的概念。
如果您有任何疑问,请欢迎评论领域的反馈和交流,最好的关系是相互实现。对您的称赞是制造炸鱼的最大动力。感谢您的支持。
文章不断更新,您可以搜索[炸鱼中的大脑]以阅读,回复[000]我有第一个大型工厂面试算法访谈算法解决方案和信息;本文githubgithub.com/eddycjy/blog已包括在内。