并发
已收录文章:146篇
-
本文回答 Go 普通 map 并发读写为什么会报错,解释常见误区,并通过互斥锁、sync.Map、race 检查和封装访问给出可落地的选择方法。418 收藏
-
引言 上一部分主要写了锁,本篇主要介绍Channel channel是Go中非常重要的一个数据类型,它和goroutine紧密相连,是Go的CSP并发模型的重要体现。 CSP CSP 是通信顺序进程(Communicating Sequential Process)417 收藏
-
问题内容func (client *Client) receive() { var err error for err == nil { var h codec.Header if err = client.cc.ReadHeader(&h); err != nil { break } call := client.removeCall(h.Seq) switch411 收藏
-
该文使用源码地址:地址 为什么会有这个实验 由于cnode上的一篇提问 node.js单线程,是不是就不用消息队列了啊?我当时的回答是 async function sqlCommon(sqlCommonName = 'sqlCommon') { let conn; try{399 收藏
-
Go 中用 buffered channel 或 golang.org/x/sync/semaphore 限制并发都能工作,但取消传播、加权资源和任务排队方式不同。本文从一个批量抓取场景出发,对比两种实现的边界,并给出选择与验收清单。384 收藏
-
go main函数的执行本身就是一个协程,当使用go关键字的时候,就会创建一个新的协程 channel channel 管道,用于在多个协程之间传递信号 无缓存管道 当对无缓冲通道写的时候,会一直阻塞等到381 收藏
-
Go语言包中的 sync 包提供了两种锁类型:sync.Mutex 和 sync.RWMutex。Mutex 是最简单的一种锁类型,同时也比较暴力,当一个 goroutine 获得了 Mutex 后,其他 goroutine 就只能乖乖等到这个 goroutine 释放该 Mu381 收藏
-
MySQL server 是多线程结构,包括后台线程和客户服务线程。多线程可以有效利用服务器资源,提高数据库的并发性能。在 MySQL 中,控制并发连接和线程的主要参数包括 max_connections、back_log、thread_380 收藏
-
Go 的 sync 一次性初始化器适合把稳定结果封装成函数,但初始化失败也会被缓存。本文用配置加载和重试边界说明一次性函数、OnceFunc 与可重试初始化该怎么选。379 收藏
-
并行流不是把线程数调大就会变快。本文用同一批数据对比串行流与并行流,解释 ForkJoinPool.commonPool 的参与方式、任务粒度、共享资源和压测边界,帮助你在真实服务里做出可复核的选择。378 收藏
-
在微服务的场景下,我们有很多任务的执行是没有明确的先后顺序的,比如一个接口同时要做到任务 A 和 任务 B,两个任务分别拿到一些数据,最后组装裁剪后通过接口下发。 此时,A 和 B 两367 收藏
-
Golang · Go教程 | 3个月前 | 并发 · 错误处理 · go · Context · 排错 · Go 错误链 context.WithCancelCause context.Cause 取消原因一次请求提前结束时,ctx.Err() 往往只剩下 context.Canceled。用 context.WithCancelCause 和 context.Cause 可以保留真正的中断原因,并把它用于日志、指标和调用方处理;关键是区分父子 Context 的先后关系。366 收藏