-
我在 Go 的循环里用 defer 关闭打开的文件,自以为每轮都妥妥地释放了,结果批量处理几千个文件时却报了 too many open files,我排查了大半天的复盘
我批量处理文件,在循环里逐个 os.Open 后 defer f.Close(),自以为每轮就关、很安心,少量文件也确实没事。可处理几千个文件时程序跑到一半崩了,报 too many open files。我每个都 defer Close 了啊,怎么会打开过多?深挖才懂我搞错了 defer 的执行时机:defer 是"函数级"延迟,在所在函数即将 return 时才执行,不是循…- 0
- 0
defer
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!

