Go并发 共 7 篇文章

Go语言select在nil channel上的永久阻塞行为
2026-04-28 22:22:18
Go 语言的 select 语句是处理多通道操作的核心机制,但它在处理 nil channel 时的行为往往出乎新手意料。当 select 中的某个 case 作用于 nil channel 时,该 case 会被永久忽略。如果所有 case 都是 nil,select 将会永久阻塞。这一特性既可以
Go语言 Go并发 select
54 0
Go语言Goroutine调度器的GMP模型与work stealing
2026-04-24 16:18:01
Go语言Goroutine调度器的GMP模型与work stealing 深入理解 Go语言的并发模型,首先要了解其核心的Goroutine调度机制。与传统操作系统线程不同,Go使用自己的轻量级线程实现,其调度器设计更为高效。 1. 认识 GMP模型基本结构 Go语言的调度器采用GMP模型,由三个主
Go并发 GMP模型 调度器
56 0
Go 并发问题:goroutine 泄漏与通道阻塞
2026-04-04 20:58:01
Go 并发问题:goroutine 泄漏与通道阻塞 Go 的 goroutine 以其轻量级和高效著称,但正因如此,某些问题往往难以察觉。goroutine 泄漏和通道阻塞是 Go 并发编程中最常见也最具欺骗性的问题。它们不会让程序立即崩溃,而是悄悄消耗内存和 CPU,最终拖垮整个应用。 理解 go
Go并发 goroutine泄漏 通道阻塞
59 0
Go 单次执行:sync.Once 与初始化
2026-04-04 10:15:05
Go 单次执行:sync.Once 与初始化 在并发编程中,有时需要确保某段代码在整个程序生命周期内只执行一次。比如加载配置、初始化全局资源、注册单例服务等场景。Go 语言标准库提供了 sync.Once 类型,专门用于实现这种“单次执行”逻辑。 什么是 sync.Once? sync.Once 是
Go并发 sync.Once 单次执行
74 0
Go 通道:select 语句与通道关闭
2026-04-04 03:42:27
Go 通道:select 语句与通道关闭 Go 语言通过通道(channel)实现 goroutine 之间的通信。select 语句是处理多个通道操作的核心机制,而正确关闭通道则是避免程序崩溃或死锁的关键。掌握这两者的配合使用,能写出更健壮的并发程序。 理解 select 语句的基本用法 sele
Go并发 通道使用 select语句
69 0
Go 等待组:sync.WaitGroup 与同步
2026-04-03 21:07:18
Go 等待组:sync.WaitGroup 与同步 在 Go 语言中,并发是核心特性之一。你经常需要启动多个 goroutine(轻量级线程)来并行处理任务,但主程序不能提前退出——否则后台 goroutine 会被强制终止。sync.WaitGroup 就是用来解决这个问题的标准工具:它让你能“等
Go并发 sync.WaitGroup goroutine同步
68 0
Go语言Goroutine泄漏的常见原因与检测方法
2026-04-02 18:19:15
Go语言Goroutine泄漏的常见原因与检测方法 Goroutine是Go语言并发编程的核心,轻量且高效。但若使用不当,容易导致Goroutine泄漏——即Goroutine启动后无法正常退出,持续占用内存和系统资源,最终拖垮程序。以下列出常见泄漏场景及对应的检测与修复方法。 一、常见泄漏原因与修
Goroutine泄漏 Go并发 channel阻塞
67 0