Golang协程与调度器原理

思考从容器上该如何设置 GOMAXPROCS 大小引发,这个数字设置多少合理,其到底限制了什么,cpu 核数,系统线程数还是协程数?

背景

Go 语言可以说为并发而生。Go 从语言级别支持并发,通过轻量级协程 Goroutine 来实现程序并发运行,go关键字的强大与简洁是其它语言不可及的,接下来让我们一起来探索 Golang 中 Goroutine 与协程调度器设计的一些原理吧。

Go 协程

概念

进程: 操作系统分配系统资源(cpu 时间片,内存等)的最小单位

线程:轻量级进程,是操作系统调度的最小单位

协程:轻量级线程,协程的调度由程序控制

怎么理解

进程,线程的两个最小单位如何理解?

在早期面向进程设计的计算机结构中,进程就是操作系统分配系统资源与操作系统调度的最小单位

但在现代的计算结构中,进程升级为线程的容器,多个线程共享一个进程内的系统资源,cpu 执行(调度)对象是线程

轻量级进程与轻量级线程如何理解

轻量级进程:如下图各个进程拥有独立的虚拟内存空间,里面的资源包括

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值