Goroutine
2025-3-18
| 2025-3-18
0  |  Read Time 0 min
type
status
date
slug
summary
tags
category
icon
password

Goroutine

 
 
Goroutine 是 Go 语言中的轻量级线程,可以理解为一种超高效的“多任务处理单元”。它的核心特点:
  • 轻量:初始栈仅 2KB(传统线程需 1MB 以上) 就像你可以在一个笔记本上同时处理多项任务,而不需要为每个任务单独准备一个办公室。
  • 高效调度:Go 运行时自动管理调度,类似“智能管家”自动分配任务给 CPU 核心
  • 非阻塞:一个 Goroutine 阻塞时(如等待 I/O),其他任务继续运行,如同你在等咖啡机时可以先处理邮件
生活例子:假设你在咖啡馆一边喝咖啡(主任务),一边处理邮件(Goroutine 1)、听音乐(Goroutine 2),这就是并发;若你有两个服务员同时处理多个订单,则是并行.
  1. 轻量级:启动百万级 Goroutine 只需几 MB 内存
  1. 通信方式
      • Channel:像传送带,协程间传递数据(如订单、零件)
      • sync.WaitGroup:像任务计数器,等待所有协程完成
  1. 调度模型:GMP(Goroutine-Machine-Processor)自动分配任务到 CPU 核心
examples:
 
 
 
1.快递分拣
场景:快递仓库有多个分拣员(Goroutine)同时分拣包裹,经理(主线程)等待所有人完成工作。
 
 
 
2.场景
顾客下单(生产者协程),咖啡师制作(消费者协程),通过通道传递订单
 
 
 
 
 
3.厨师烹饪
场景:主厨(主线程)启动多个协程处理任务,5秒后通知所有协程停止。
Redis设计与实现微服务中的线程和进程
Loading...
Catalog