并发
已收录文章:146篇
-
1. goroutine 1.1 定义 func main() { for i := 0; i < 10; i++ { //开启并发打印 go func(i int) { fmt.Printf("hello goroutine : %d \n", i) }(i) } time.Sleep(time.Millisecond) } go语言是采用一种叫 协程(Coroutine) 轻量级255 收藏
-
我就废话不多说了,大家还是直接看代码吧~ package main import ( "fmt" "time" "sync" "sync/atomic" ) func main() { test1() test2() } func test1() { var wg sync.WaitGroup count := 0 t := time.Now() for i := 0 ; i < 50000251 收藏
-
Go 并发测试里大量 time.Sleep 往往又慢又不稳定。Go 1.25 已将 testing/synctest 纳入标准库,可在受控测试环境中使用虚拟时间和 synctest.Wait 检查后台任务的稳定状态。本文用延迟写缓存的例子说明最小迁移方式、适用边界和回归检查。246 收藏
-
Java HttpClient 的 CookieHandler 既能复用会话,也可能让不同账号的请求串 Cookie。本文从共享客户端、并发访问和任务结束三个边界,给出隔离、清理与验证方法。241 收藏
-
Go语言的类型系统提供了单方向的 channel 类型,顾名思义,单向 channel 只能用于发送或者接收数据。channel 本身必然是同时支持读写的,否则根本没法用。假如一个 channel 真的只能读,那么肯定238 收藏
-
Golang · Go教程 | 1个月前 | 并发 · HTTP · go · Context · net/http · HTTP中间件 Go教程 context取消 http.Request.Clone WithContext 请求复制Go 的 http.Request.Clone 和 WithContext 都能得到一份新请求,但复制深度、Header 与 URL 的独立性不同。本文用重试转发和取消场景拆开两者边界,并用测试确认改写不会污染原请求。238 收藏
-
用 Go 1.25+ testing/synctest 测试定时器、异步回调和取消路径,解释 Test、Wait、fake time 的最小用法,以及网络和外部 goroutine 为什么不能直接放进 bubble。238 收藏
-
复用 Go 的 time.Timer 时,Stop 和 Reset 的行为会受到 Go 版本、定时器是否已经到期以及是否存在并发接收的影响。本文用一个超时重试场景拆开旧版本排空规则、Go 1.23 的同步定时器语义和可验证的停机边界。236 收藏
-
那么通过什么手段来优化呢?我们首先想到的是通过并发来的方式来处理依赖,这样就能降低整个依赖的耗时,Go基础库中为我们提供了 WaitGroup 工具用来进行并发控制,但实际业务场景中多个234 收藏
-
Python 异步服务需要把 request_id、租户或用户上下文带进子任务时,contextvars 能保持 Task 隔离,但跨线程不会自动复制。本文用可复现的边界检查说明 copy_context、to_thread 与日志关联的正确用法。234 收藏
-
Java NIO WatchService 适合监听目录变化,但它不是变更日志:事件可能合并、丢弃或因 WatchKey 失效而停止通知。本文从注册目录、处理事件、识别 OVERFLOW、去重和全量重扫几个边界,给出一套可复查的实现方式。231 收藏
-
context.AfterFunc 适合把取消信号转换成资源清理回调,但 Stop 返回 false 时回调可能已经启动,不能把它当成完成通知。本文从旧式 done 监听迁移到 AfterFunc,拆解取消、停止、同步和测试边界。224 收藏