标签: concurrency
与该标签相关的所有文章 "concurrency".
-
tower(三):内置中间件-限流、重试、超时与缓冲
tower 提供协议无关的通用中间件, 每个都通过 feature flag 独立启用. 核心六个: ConcurrencyLimit (并发数上限), RateLimit (速率限制), Timeout (超时), Retry (重试 + Policy trait), Buffer (mpsc 通道使 Service 可 Clone), LoadShed (过载丢弃). 它们与 tower-http 的 HTTP 专用中间件互补而非重复.
-
微服务(三):多实例共享数据库为什么不需要额外同步
多个无状态服务实例访问同一个 PostgreSQL,不需要分布式锁或 Redis 互斥。数据库的 MVCC + 事务 + 约束已经处理了并发控制。你唯一需要操心的是业务层"先读后写"的竞态,而这个问题单实例多 goroutine 也一样存在,解决方案全在 SQL 层面(原子 SQL、乐观锁、SELECT FOR UPDATE、唯一约束)。
-
现代 C++(五):内存模型、atomic、thread 与 future
C++11 之前没有语言级内存模型,多线程代码在编译器 + CPU 双重乱序下不可能正确(Hans Boehm 2005 论文证明)。C++11 一次性引入内存模型、std::atomic、std::thread、std::future 四件套,给了 C++ 官方并发语义。六种 memory order 是理解的核心——在 x86 上 release/acquire 几乎免费、seq_cst 要 mfence,在 ARM 上差距更大,这正是暴露细粒度 order 的意义。
-
Go 运行时(一):GMP 调度模型
Go 运行时通过 G(goroutine)、M(OS thread)、P(logical processor)三级抽象实现 M:N 线程调度。P 的引入(Go 1.1)解决了全局锁竞争,work-stealing 保证负载均衡,异步抢占(Go 1.14+,SIGURG 信号)消除了 CPU 密集型 goroutine 的饥饿问题。Go 1.25 起 GOMAXPROCS 自动感知容器 cgroup CPU 限制。