并发编程

范中勤2 天前
python·llm·协程·并发编程·asyncio
Python Asyncio 协程与 LLM 异步并发原理技术文档(与 Java 对比|彻底澄清所有误区)Python 协程不是线程、不新开线程、不由 OS 调度。协程是:单 OS 线程内、用户态事件循环、协作式调度的轻量 IO 并发模型。
code2cat4 天前
java·cas·并发编程
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中上一篇用AtomicIntegerFieldUpdater处理对象里的名额。这次把场景换成上传额度:一个账户最多累计接收100亿字节,多个上传任务同时申请额度。每次申请都要先判断容量,再把申请量加入累计值。
deepseek234 天前
数据库·python·sqlite·并发编程·wal
SQLite WAL 开了仍报 database is locked?Python 后台任务的事务与幂等修复有团队把SQLite切换成WAL以后,以为多个Python进程能同时修改一个数据库文件。读请求确实更加顺畅,后台任务却仍然偶尔报database is locked。这不是WAL失效。SQLite官方明确说明:WAL允许读取和写入更好地并行,但一个时刻仍只有一名写入者。几个进程使用不同连接,也不会获得多名写入者同时提交的能力。了解这个限制以后,诊断重点就应当从一味增加超时,转到真正的事务边界。
code2cat9 天前
java·开发语言·cas·并发编程·逻辑删除
Java进阶篇之AtomicMarkableReference:引用还在,标记已经改变上一篇用AtomicStampedReference记录引用的变化轮次。继续往下看,有些业务只需要表达两个状态:节点还有效,或者节点已被标记删除。把一个布尔值与引用一起观察,就能让提交条件带上这个状态。
无名猿9 天前
c++·性能优化·并发编程·现代c++
手写一个线程池:任务队列、工作线程与停止顺序的三个设计点每个任务 new 一个 std::thread 是并发编程里最贵的偷懒方式:线程创建要走系统调用,栈空间按兆算,销毁又要再来一遍。当任务本身只有几微秒时,你花在「造线程」上的时间会比干活多几十倍。 线程池的思路很朴素:线程只创建一次,任务排队,谁空谁取。这篇从零把它写出来,然后把三个最容易写错的设计点讲透。
无名猿9 天前
c++·性能优化·并发编程·现代c++
锁进阶:atomic_flag 自旋锁、shared_mutex 读写锁与无锁的代价std::mutex 不是免费的:一旦发生竞争,抢不到锁的线程会被挂进内核,等锁释放再被唤醒,这一挂一醒就是两次上下文切换,微秒级开销。可如果你的临界区只有「++counter」这么短,等锁的时间可能比干活的时间还长。这篇讲清锁的三条进阶路线:极短临界区用自旋锁(atomic_flag 实现)、读多写少用读写锁(shared_mutex)、以及「别迷信无锁,先测再选」。
code2cat10 天前
java·cas·并发编程·aba
Java进阶篇之AtomicStampedReference:引用回到原值,版本戳仍能记住变化上一篇用AtomicReference发布一份完整状态。接着往下想:线程读到引用A,准备稍后提交;期间另一个线程把A换成B,再换回同一个A。这时,只比较引用还能看见中间那次变化吗?
code2cat11 天前
java·并发编程·不可变对象·atomicreference
Java进阶篇之AtomicReference:一次替换引用,读到一份完整状态上一篇用LongAccumulator处理可以合并的统计样本。配置更新面对的是另一类问题:版本号、超时值和路由列表需要一起变化,读取者也希望拿到同一份状态。把这些字段装进不可变对象,再整体替换引用,能让更新边界更容易看清。
无名猿11 天前
c++·内存管理·并发编程·现代c++
shared_ptr 的线程安全边界:计数安全不等于对象安全std::shared_ptr 大概是 C++ 里被误解最多的类型。很多人听说「它的引用计数是线程安全的」,就放心地把它当全局变量、在线程之间随手赋值,然后在大压力下偶发崩溃或者计数错乱。
无名猿11 天前
c++·性能优化·并发编程·现代c++
shared_mutex 读写锁该不该用,以及 volatile 的三大误解「读多写少,那用读写锁肯定更快吧。」这句话是并发优化里最常见的直觉,也是最常翻车的一个。std::shared_mutex(C++17)确实做到了多读者并存、写者独占,但它的独占成本比 std::mutex 高,读者路径还要动一个共享计数器。下面先讲清该怎么用、什么时候别用,再顺手把 volatile 的三大误解拆掉。这两件事总是一起出现,因为动机都一样:想省掉那把锁。
Thinker QAQ12 天前
java·python·go·并发编程·volatile·memory model
并发编程(七):volatile——从语言规则到 CPU前两篇从语言规则一路看到 CPU,解释了 Atomic 如何提供 Atomicity、Visibility 和 Ordering。
code2cat13 天前
java·并发编程·原子类·longadder
Java进阶篇之LongAdder:把统计更新分散,再读取总和上一篇通过AtomicInteger与CAS理解了单个共享值的原子更新。当大量线程只想“记一次请求”,共同修改一个计数器就容易形成竞争。统计场景还有另一种思路:把更新压力分散到多个累加单元,读取时再合并结果。
Thinker QAQ16 天前
java·go·cas·并发编程·atomic·cpython
并发编程(六):Atomic 的实现——从 Runtime 到 CPU上一篇从语言内存模型的规则出发,看 Atomic 如何提供 Atomicity、Visibility 和 Ordering。
letisgo51 个月前
java·面试·并发编程·aqs·jmm
JAVA 高级进阶02篇《并发编程三板斧:JMM、CAS与AQS的源码级拆解》「Java高级技能提升系列」第02篇(全20篇)· 面向2026年中高级Java岗面试 · 专栏持续更新,欢迎关注
Java爱好狂.1 个月前
程序员·高并发·架构师·并发编程·java面试·java面试题·java八股文
Java初学者如何设计一个高并发系统?设计一个高并发系统并非易事,如果不站在巨人的肩膀上来开展工作的话,这条路是很难保持一路畅通的!所以,本着好东西就是要拿出来分享的原则,LZ就把前段时间从阿里的一位老哥手上捞到的百亿级系统架构设计实录分享给大家,希望能对想接触架构的朋友或者已经是架构师的朋友们得到一点启发!
~木雨1 个月前
java·安全·架构·线程池·并发编程·高并发架构
Java 并发编程架构全景:并发层的五域设计 —— 线程模型、线程池隔离、并发安全到问题治理(全体系汇总)文章收录专栏:Java 核心原理全解:源码・并发・面试实战 系列文章: Java 并发锁机制:从底层原理到锁升级,这一篇就够了 深入理解 Java 内存模型(JMM):从抽象规范到生产实践 Java 线程从生到死:创建三式、六态流转、中断协作与死锁活锁饥饿,一篇讲透 Java 线程池七问七答:参数、执行流程、拒绝策略到 ThreadLocal 内存泄漏,面试必背 JUC 并发工具全家桶:CountDownLatch、CyclicBarrier、Semaphore、CompletableFuture 与并发
JL152 个月前
java·开发语言·面试·并发编程
Java并发编程面试全攻略-从synchronized到AQS底层原理并发编程是Java面试的重灾区。这篇文章帮你建立完整的并发知识图谱。并发编程大概是Java面试中最"玄学"的部分——知识点多、概念抽象、还容易搞混。
k4m7v2pz2 个月前
websocket·架构·rust·并发编程·tokio
Rust 高并发 WebSocket 连接管理:从线程地狱到 tokio 异步架构在需要同时维持几十上百条 WebSocket 连接的业务场景中(聊天中继、行情推送、传感器采集、多账号会话),连接管理的架构设计直接决定了系统的稳定性和资源消耗。最初的实现往往采用"一条连接一个线程"或"全局共享一条连接"两种极端方案,但两者都会在高并发场景下暴露出严重问题。
敲个大西瓜2 个月前
java·并发编程
JAVA 并发编程第1题:进程和线程的区别?核心回答:· 进程是操作系统资源分配的最小单位,拥有独立的内存空间(堆、栈、数据段、代码段),进程间相互隔离。 · 线程是CPU调度的最小单位,是进程内的一个执行路径。同一进程的多个线程共享进程的堆和方法区(JDK1.8后叫元空间),但每个线程有自己的程序计数器、虚拟机栈和本地方法栈。
X1A0RAN3 个月前
python·性能优化·并发编程
Python 并发请求性能优化实战在自动化测试和日常运维中,我们经常需要从第三方平台(如 Allure、Jenkins)批量拉取数据。面对成百上千条测试用例,如果采用传统的串行请求,程序往往会因为漫长的网络等待而变得极其低效。