并发控制 共 7 篇文章

Go语言sync.Cond与channel在条件等待中的选择
2026-04-30 09:20:22
Go语言sync.Cond与channel在条件等待中的选择 在Go语言的并发编程中,让一个Goroutine等待特定条件成立是常见需求。Go标准库提供了sync.Cond(条件变量)和channel(通道)两种机制来实现这一功能。虽然两者都能达到“等待”和“通知”的目的,但它们的适用场景和底层逻辑
Go语言 并发编程 sync.Cond
12 0
MySQL MVCC多版本并发控制的实现原理
2026-04-26 23:15:11
MySQL MVCC多版本并发控制的实现原理 MySQL 的 InnoDB 引擎通过 MVCC(MultiVersion Concurrency Control,多版本并发控制)实现了在不加锁的情况下进行并发读写。这种机制让“读操作”和“写操作”互不冲突,极大地提升了数据库的性能。MVCC 的核心实
MySQL MVCC InnoDB
33 0
Go语言Context.WithTimeout在级联调用中的取消传播
2026-04-20 14:26:27
Go语言Context.WithTimeout在级联调用中的取消传播 Context.WithTimeout 是 Go 语言中控制并发操作生命周期的核心机制。在微服务或级联调用(A调用B,B调用C)中,当上游请求因超时被取消时,取消信号必须自动、迅速地传播到下游,以释放所有正在运行的 Gorouti
Go语言 Context 级联调用
40 0
Python asyncio.Semaphore在限制并发请求数中的应用
2026-04-19 22:16:21
Python asyncio.Semaphore在限制并发请求数中的应用 当使用 asyncio 处理大量网络请求(如爬虫或API调用)时,为了追求极致速度,往往会创建成千上万个并发任务。如果不加限制,这种“瞬时爆发”的流量会瞬间耗尽本地带宽、导致目标服务器触发拒绝服务保护,甚至直接封禁IP。asy
Python编程 异步编程 并发控制
48 0
Go 等待组:sync.WaitGroup 与同步
2026-04-03 21:07:18
Go 等待组:sync.WaitGroup 与同步 在 Go 语言中,并发是核心特性之一。你经常需要启动多个 goroutine(轻量级线程)来并行处理任务,但主程序不能提前退出——否则后台 goroutine 会被强制终止。sync.WaitGroup 就是用来解决这个问题的标准工具:它让你能“等
Go并发 sync.WaitGroup goroutine同步
52 0
C++ 原子锁存器Atomic Flag实现自旋锁
2026-04-03 18:42:11
C++ 原子锁存器Atomic Flag实现自旋锁 C++11 引入了 std::atomicflag,这是标准库中最轻量级的原子类型,专为实现无锁同步原语(如自旋锁)而设计。它只支持两个操作:测试并设置(testandset)和清除(clear),天然适合构建高效的自旋锁。 理解 std::ato
C++原子操作 自旋锁实现 atomic_flag
76 0
ST语言多线程环境下资源锁(Mutex)未释放导致的死锁预防
2026-03-18 04:08:08
在 ST(Structured Text)语言编写的 PLC 程序中,当多个任务(Task)或多个循环执行的程序组织单元(POU)并发访问同一共享资源(如全局变量、硬件寄存器、通信缓冲区、配方数据块)时,若未对访问过程施加排他性控制,极易引发数据错乱、状态不一致甚至系统级死锁。其中,资源锁(Mute
ST语言 PLC编程 死锁预防
65 0