老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

GO语言中的进程、线程、协程分别是什么?老男孩GO语言线上课程

老男孩IT教育

行业新闻

2021年10月27日 16:48

本篇文章主要介绍下GO语言中的进程、线程和协程这三个概念,三者相似度很高,但还是有细微的差别,不止GO语言,其他编程语言同样有这三个概念,刚接触GO语言的同学可以认真看下本篇文章,相信一定会对你有帮助。请看下文:

       本篇文章主要介绍下GO语言中的进程、线程和协程这三个概念,三者相似度很高,但还是有细微的差别,不止GO语言,其他编程语言同样有这三个概念,刚接触GO语言的同学可以认真看下本篇文章,相信一定会对你有帮助。请看下文:

GO语言培训

       进程:

       在早期的计算机中,用户一次只能提交一个任务,只能独立享用计算机的全部资源,也就是只能干一件事情,不能进行IO读写,一个任务在CPU上所花费的时间非常少,大部分时间都是在等待IO。

       为了合理利用CPU资源,把内存划分为多块,不同程序使用各自的空间互不干扰,这里的程序指的就是进程,CPU可以在多个进程之间任意切换,从而让CPU的利用率变高。

       为了实现CPU在多个进程之间切换,需要保存进程的上下文,以便下次切换回来可以恢复执行进度,Linux中采用了基于时间片和优先级的完全公平调度算法。

       线程:

       多线程是为了解决CPU利用率的问题,线程则是为了减少上下文切换时的开销,进程和线程在Linux中没有本质区别,最大的不同就是进程有自己独立的内存空间,而线程是共享内存空间。

       在进程切换时需要转换内存地址空间,而线程切换没有这个动作,所以线程切换比进程切换代价要小得多。

       协程:

       想要简单,又要性能高,协程就可以达到我们的目的,它是用户视角的一种抽象,操作系统并没有这个概念,主要思想是在用户态实现调度算法,用少量线程完成大量任务的调度。

       Goroutine是GO语言实现的协程,其特点是在语言层面就支持,使用起来十分方便,它的核心是MPG调度模型:M即内核线程;P即处理器,用来执行Goroutine,它维护了本地可运行队列;G即Goroutine,代码和数据结构;S及调度器,维护M和P的信息。

       关于"GO语言中的进程、线程、协程分别是什么?"的话题到这里就结束了,老男孩教育go培训课程内容多次更新迭代,更加注重学员的实践动手能力以及思维的形成,杜绝纸上谈兵,全企业真实案例结合理论授课,让学员更好的过渡到工作岗位。想要了解go语言课程信息,欢迎咨询右下角在线客服。

       推荐阅读:

       在使用GO语言开发过程中,有哪些实用的工具?老男孩GO语言课程

       【面试必备】GO语言常见面试题汇总!老男孩GO开发培训

       互联网大厂对Golang工程师有哪些技术要求?GO开发培训

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。