Go语音中并发介绍
最佳答案 问答题库618位专家为你答疑解惑
Go 是一种并发语言,而不是并行语言。在讨论 Go 中如何处理并发之前,我们必须首先了解什么是并发以及它与并行有何不同。
什么是并发?
并发性是指同时处理很多事情的能力。最好用一个例子来解释。
让我们考虑一个人慢跑。假设他早上慢跑时,鞋带松了。现在,这个人停止跑步,系上鞋带,然后再次开始跑步。这是并发的一个典型例子。这个人能够同时处理跑步和系鞋带,也就是说,这个人能够同时处理很多事情
什么是并行性以及它与并发有何不同?
并行性是同时做很多事情。这听起来可能与并发相似,但实际上是不同的。
让我们通过相同的慢跑示例更好地理解它。在本例中,我们假设此人正在慢跑,并且还在听音乐。在这种情况下,这个人一边慢跑一边听音乐,也就是说他同时在做很多事情。这称为并行性。
并发和并行——技术角度
我们通过现实世界的例子了解了什么是并发以及它与并行的不同。现在让我们从更技术的角度来看看它们
假设我们正在编写一个网络浏览器。Web 浏览器具有各种组件。其中两个是网页渲染区域和用于从互联网下载文件的下载器。假设我们已经以这样的方式构建了浏览器的代码,即每个组件都可以独立执行(这是使用 Java 等语言中的线程来完成的,在 Go 中我们可以使用 Goroutines 来实现这一点,稍后会详细介绍)。当此浏览器在单核处理器中运行时,处理器将在浏览器的两个组件之间进行上下文切换。它可能会下载一个文件一段时间,然后可能会切换到呈现用户请求的网页的 html。这称为并发。并发进程在不同的时间点启动,并且它们的执行周期重叠。在这种情况下,下载和渲染在不同的时间点开始并且它们的执行重叠。
假设同一个浏览器在多核处理器上运行。在这种情况下,文件下载组件和HTML渲染组件可能同时运行在不同的内核中。这称为并行性。

- 界面控件DevExpress WPF流程图组件,完美复制Visio UI!(一)
- Vue2系列 -- 组件自动化全局注册(require.context)
- 扩散模型实战(十一):剖析Stable Diffusion Pipeline各个组件
- django DRF认证组件示例
- MySQL内部组件与日志详解
- 前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 第五章 Element-Plus组件库安装和使用
- 修改el-radio-group样式,自定义单选组件
猜你感兴趣
版权申明
本文"Go语音中并发介绍":http://eshow365.cn/6-27194-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!