线程模型 && go高并发缘由

本文探讨了线程模型,包括多对一、一对一和多对多模型,以及Go语言的线程模型如何实现高并发。Go的runtime调度器基于多对多模型,使用GPM(Goroutine-Pool-Machine)机制,通过轻量级的goroutine和自有的调度器,有效地利用系统资源,实现高效并发。文章还介绍了goroutine的控制函数和垃圾回收策略。
摘要由CSDN通过智能技术生成

之所以分析线程模型,主要是想弄明白go的runtime scheduler 优势所在。
go天生支持高并发的原因有两点:

  1. 占用资源很少的goroutine,更轻量的线程,可以随意创建上百万个;
  2. 源码包runtime 实现了基于语言层面的运行时goroutine调度(GPM);

进程与线程

传统的操作系统中,拥有资源和独立调度的基本单位是进程。而在引入线程的操作系统中,线程是独立调度的基本单位, 进程是资源拥有的基本单位。

一个程序至少有一个进程,一个进程至少有一个线程。进程拥有独立的内存单元,旗下多线程共享该进程内存单元。线程的执行依赖于其所属进程。

从逻辑角度看,线程的意义在于,在一个程序中 多个线程可以并发执行不同逻辑单元 工程代码。操作系统并没有把多个线程看作独立的存在。

  • 进程(process) 是具有一定独立功能的程序关于某个数据集合上的一次运行活动。它是系统进行资源分配和调度的一个独立单元。

进程有独立的地址空间,进程奔溃不会影响到其他进程。

  • 线程
    轻量级进程, 是cpu调度和分派的基本单位。它本身不拥有系统资源 但共享所属进程资源,且只有程序运行时必要的程序计数器 寄存器和栈。
    一个线程包含以下内容:

一个指向当前被执行指令的指令指针;
一个栈;
一个寄存器值的集合,定义了正在执行线程的数据集合;
一个私有的数据区;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值