并发编程 共 9 篇文章

Go语言 通道Channel的缓冲与无缓冲区别
2026-04-04 03:47:09
Go语言 通道Channel的缓冲与无缓冲区别 Go语言中的通道(channel)是协程(goroutine)之间通信的核心机制。理解通道的缓冲与无缓冲特性,是编写高效、正确并发程序的关键。 1. 创建无缓冲通道 声明一个无缓冲通道的方式如下: go ch := makechan int 这行代码创
Go语言 通道 缓冲通道
1 0
Go 原子操作:sync/atomic 包的使用
2026-04-04 00:40:49
Go 原子操作:sync/atomic 包的使用 在并发编程中,多个 goroutine 同时读写同一个变量时,如果不加保护,会导致数据竞争(data race),产生不可预测的结果。Go 提供了 sync/atomic 包,用于实现对基本类型(如整数、指针)的无锁原子操作。这些操作由 CPU 指令
Go 并发编程 原子操作
2 0
Go 并发编程:goroutine 与 channel
2026-04-03 18:18:18
Go 并发编程:goroutine 与 channel Go 语言的并发模型基于两个核心概念:goroutine 和 channel。goroutine 是轻量级线程,由 Go 运行时自动管理;channel 是 goroutine 之间通信的管道,用于安全地传递数据。掌握这两者,就能高效编写并发程
Go 并发编程 goroutine
2 0
Go语言Select语句在超时控制中的实现模式
2026-04-02 22:36:33
Go语言Select语句在超时控制中的实现模式 Go语言通过select语句实现对多个通道(channel)操作的监听,是并发编程中处理异步事件的核心机制。其中一种高频应用场景是为操作设置超时限制,防止程序无限等待。这种模式简洁、高效,且无需额外依赖。 基本超时控制模式 最典型的超时控制通过time
Go语言 select语句 超时控制
8 0
C++ 原子操作与内存序在自旋锁中的实现
2026-04-02 20:36:09
C++ 原子操作与内存序在自旋锁中的实现 多线程程序中,多个线程同时访问共享资源时必须进行同步,否则会导致数据竞争和未定义行为。自旋锁是一种轻量级的同步原语,适用于临界区执行时间较短的场景。C++11 引入了原子操作和内存序机制,使得我们可以不用依赖平台相关的内联汇编或系统 API,就能写出可移植、
C++原子操作 内存序 自旋锁
8 0
Go语言Goroutine泄漏的常见原因与检测方法
2026-04-02 18:19:15
Go语言Goroutine泄漏的常见原因与检测方法 Goroutine是Go语言并发编程的核心,轻量且高效。但若使用不当,容易导致Goroutine泄漏——即Goroutine启动后无法正常退出,持续占用内存和系统资源,最终拖垮程序。以下列出常见泄漏场景及对应的检测与修复方法。 一、常见泄漏原因与修
Goroutine泄漏 Go并发 channel阻塞
7 0
Erlang 进程:spawn() 与消息传递
2026-04-02 15:15:14
Erlang 进程:spawn 与消息传递 Erlang 的核心优势在于其轻量级并发模型,每个“进程”都是独立运行的执行单元,不共享内存,仅通过消息传递通信。这种设计天然避免了锁竞争和数据竞争问题,非常适合构建高可用、高并发的系统。掌握 spawn 和消息传递机制,是编写 Erlang 并发程序的第
Erlang 进程 spawn
7 0
Go 条件变量:sync.Cond 与等待通知
2026-04-02 10:26:18
Go 条件变量:sync.Cond 与等待通知 Go 语言的 sync 包提供了多种同步原语,其中 sync.Cond 是一个用于协调 goroutine 之间“等待通知”行为的条件变量。它常用于解决多个 goroutine 需要等待某个共享状态发生变化后再继续执行的问题。 何时使用 sync.Co
Go sync.Cond 条件变量
7 0
Python GIL锁对多线程性能的真实影响分析
2026-04-01 23:19:15
Python GIL锁对多线程性能的真实影响分析 Python 的全局解释器锁(Global Interpreter Lock,简称 GIL)是 CPython 解释器中的一个机制,它确保同一时刻只有一个线程能执行 Python 字节码。这个设计简化了内存管理,但也引发了关于多线程性能的广泛误解。本
Python GIL锁 多线程
13 0