文章插图
Go 中的并发性是以 goroutine(独立活动)和 channel(用于通信)的形式实现的 。处理 goroutine 时,程序员需要小心翼翼地避免泄露 。如果最终永远堵塞在 I/O 上(例如 channel 通信),或者陷入死循环,那么 goroutine 会发生泄露 。即使是阻塞的 goroutine,也会消耗资源,因此,程序可能会使用比实际需要更多的内存,或者最终耗尽内存,从而导致崩溃 。让我们来看看几个可能会发生泄露的例子 。然后,我们将重点关注如何检测程序是否受到这种问题的影响 。
发送到一个没有接收者的 channel
文章插图
假设出于冗余的目的,程序发送请求到许多后端 。使用首先收到的响应,丢弃后面的响应 。下面的代码将会通过等待随机数毫秒,来模拟向下游服务器发送请求:
文章插图
输出:
文章插图
每次调用
推荐阅读
- 什么样的人能够被称之为全栈工程师?
- 29岁小伙娶59岁 小伙7岁被抛弃,48岁大叔一生未婚
- 淘宝店铺被永久封怎么解决 淘宝会被店家屏蔽吗
- 买二手房,一定要注意这3点,当心被房主坑骗
- 淘宝店铺被冻结可以注销吗 淘宝卖家店铺被冻结了怎么办
- 2022青岛春节回老家会被管控吗,2022年春节能不能离开青岛回老家
- 怎么鉴别红茶?
- 梦见自己头发上生虱子被掐死 梦见自己头上长虱子并弄死
- 背带裤|这样断食能减重、护心、抗衰老,不过,还有个不断食的减肥法。
- 酒驾|男子聚餐后醉驾摩托出事故 借车人被判赔5万余元