futex 与内核同步原语底层:等待队列、唤醒机制与 PI mutex
pthread_mutex 无竞争时根本不进内核,有竞争时才通过 futex 系统调用挂起线程。本文拆解 futex 的用户态快路径、系统调用操作码、等待队列与唤醒,以及 PI futex 如何用优先级继承解决优先级反转。
tag
pthread_mutex 无竞争时根本不进内核,有竞争时才通过 futex 系统调用挂起线程。本文拆解 futex 的用户态快路径、系统调用操作码、等待队列与唤醒,以及 PI futex 如何用优先级继承解决优先级反转。
系统讲解 .NET 的线程同步原语,覆盖 lock 与 Monitor 的底层实现、SemaphoreSlim 与限流、Channel 生产者消费者、并发集合的语义,以及 Interlocked 与内存屏障的正确用法与常见死锁模式。
系统掌握并发与同步核心:竞态条件与临界区、原子性与可见性、互斥锁(synchronized/ReentrantLock/读写锁)、信号量与条件变量、自旋锁与乐观并发、内存模型与 volatile、无锁编程(CAS/ABA)、以及死锁/活锁/饥饿的成因与工程避免。
死锁(Deadlock)是并发系统中一类经典而且代价高昂的故障:多个进程或线程因相互等待对方持有的资源,而全部陷入永久阻塞。与竞态条件不同,死锁不会破坏数据完整性,但它会让系统「冻结「在某一点,服务完全丧失可用性。
在多核处理器成为主流的当下,并发编程已是必备技能。然而,并发带来的竞态条件(Race Condition)和数据不一致问题要求我们借助同步原语来协调多个执行单元对共享资源的访问。本文从底层实现出发,逐一剖析 Linux 中最常用的同步机制:互斥锁、信号量、条件变量、读写锁、自旋锁和 RCU,并给出选
C++11 标准库对并发编程进行了系统性重构,引入了 、 、 等核心头文件,让开发者无需依赖平台特定的 pthread 或 Win32 API,即可编写可移植的多线程代码。在此之前,C++ 开发者通常需要借助 Boost.Thread 或者直接调用操作系统底层 API,不仅代码可移植性差,而且容易因
深入理解死锁的四个必要条件、预防与避免策略,掌握信号量、互斥锁、管程、条件变量等经典同步机制。
sync.WaitGroup 是 Go 并发入门必学工具。它的职责很简单:等一组 goroutine 做完。但真实代码里,等待只是第一步。你还要拿到每个任务的结果、处理错误、控制并发数量,并保证 channel 正确关闭。很多初学者会写出“能等完,但结果偶尔丢失或死锁”的代码。
深入讲解 Go sync 包的 Mutex、RWMutex、WaitGroup、Once、Pool 等并发工具的内部原理与实现,涵盖限流器、资源池与高并发缓存等实战案例,以及锁粒度控制与死锁避免的最佳实践
从地图标记、任务点、队友 ping、世界事件提示等功能切入,讨论服务器端如何设计兴趣订阅、可见性裁剪、优先级合并和移动端带宽控制。