并发
已收录文章:36篇
-
文章 · python教程 | 3星期前 | 并发 · python · 故障排查 · asyncio · 任务取消 · Python asyncio.create_task Python 任务取消 asyncio CancelledError Python 异步任务收尾Python 异步接口超时后,后台任务仍在访问数据库或写文件,常见原因不是 cancel() 失效,而是任务没有被保存、取消没有被等待,或协程吞掉了 CancelledError。本文用一个可复现的 asyncio 故障现场拆开这条链路,并给出带超时、回收和日志核对的改法。490 收藏
-
Go 服务把 regexp.Compile 放进请求函数后,正则本身没变,延迟却会随并发上升。本文用基准对比请求内编译、包级预编译和受控缓存,解释编译成本、并发读写与动态规则的边界。479 收藏
-
数据库 · MySQL | 3星期前 | 并发 · MySQL · InnoDB · update · 库存扣减 · innodb MySQL 库存扣减 条件 UPDATE 防超卖 affected rows用一条带库存条件的 UPDATE 实现最小扣库存接口,避免先查后改造成超卖;同时说明受影响行、事务边界与死锁重试。470 收藏
-
Golang · Go问答 | 1个月前 | 并发 · channel · select · 性能排查 · Go问答 · select Go channel context default CPU飙高 忙等循环 tickerGo select 里的 default 会在没有 channel 就绪时立即返回;如果外层套着无限 for,就会形成忙等循环,让 CPU 空转。更稳的写法是阻塞等待、用 ticker 控制检查频率,并用 context 处理退出。438 收藏
-
大模型接口出现 429 时,连续立刻再发往往只会让队列更长。本文按运行手册的节奏说明如何保留响应线索,区分请求数量、令牌总量与并发积压三类原因,再用限并发、缩短上下文和带抖动的退避把线上对话从拥塞中拉回来。432 收藏
-
Go 服务把审计日志同步写进一个文件后,吞吐上不去、磁盘抖动还会拖慢请求。本文用分片队列和批量落盘拆开写入压力,并验证顺序、重放与停机收尾。430 收藏
-
虚拟线程适合大量阻塞型任务,但它不会自动增加数据库连接等稀缺资源。本文从读者提问出发,说明虚拟线程不该再被线程池复用,连接池本身的并发边界,以及何时应使用 Semaphore。430 收藏
-
Golang · Go问答 | 20小时前 | 并发 · 错误处理 · go · Context · 取消原因 WithCancelCause Go context.Cause context.Errcontext.Err 只能告诉调用方请求已取消或超时,context.Cause 才能保留触发取消的具体原因。本文用一个可运行的 Go 示例说明 WithCancelCause、Cause 和 Err 的关系,以及父子 context 竞争取消时的边界。428 收藏
-
Golang · Go问答 | 1个月前 | 并发 · channel · range · Close · Go问答 · 并发退出 Channel关闭 Go问答 close channel range退出 发送方关闭Go channel 关闭后仍然可以把缓冲区里的值读完,再继续读取会得到元素类型的零值和 ok=false;但关闭后的 channel 不能再写入,也不能重复关闭。真正安全的关键是让发送方统一负责关闭,并让接收方用 range 或 ok 值退出。427 收藏
-
Golang · Go教程 | 2星期前 | 并发 · go · trace · 性能排查 · Go 1.25 · Go 1.25 runtime/trace FlightRecorder 运行时追踪 延迟排查Go 1.25 的 runtime/trace.FlightRecorder 用内存环形缓冲持续保留最近一小段运行时追踪,等异常延迟发生时再写出文件。本文对比传统 Start/Stop 采集方式,给出 HTTP 服务接入、触发写盘和资源边界检查。425 收藏
-
本文回答 Go 普通 map 并发读写为什么会报错,解释常见误区,并通过互斥锁、sync.Map、race 检查和封装访问给出可落地的选择方法。418 收藏
-
Go 的 sync 一次性初始化器适合把稳定结果封装成函数,但初始化失败也会被缓存。本文用配置加载和重试边界说明一次性函数、OnceFunc 与可重试初始化该怎么选。379 收藏