![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
死锁
djqueue
Be a better man.
展开
-
如何用pprof检测golang代码中的死锁
用golang做的后端项目,为了实现高性能,通常会在运行过程中开启多个goroutine,并行处理并发请求。并发处理请求提升效率的同时,也引入了资源并发读写的场景,这通常会带来一些问题,比如同时读写一个map会导致程序panic,为此,我们需要为那些不应被多个goroutine同时访问的资源加锁。一个复杂的后端项目,通常会包含很多很多的锁,我们很难保证我们写的程序不出现死锁,或者长时间的锁等待。锁的问题不像业务逻辑的问题那么容易被发现,它有时可能只是阻塞了某个goroutine,这种情况下整体的功能原创 2020-08-07 19:55:44 · 9851 阅读 · 2 评论 -
golang项目 如何排查死锁
之前写过一篇如何用pprof检测golang代码中的死锁,讲了下如何发现代码中的死锁,发现了死锁怎么办?自然是要解之。。最近刚好解决了两个死锁,分享一下心得,希望能帮助到大家~我把死锁分为两种,一种为简单死锁,另一种为并发场景下的死锁,接下来我们分别来说一说。简单死锁所谓简单死锁,就是写代码的时候粗心大意写出来的,比如说我们写了一个这样的函数:函数A会在获取锁之后调用函数B,而B也要获取这个锁,这时候显然就会发生死锁,而且是百分百出现的。现在你看着我的这个图可能觉得,我怎么可能犯如此原创 2020-09-17 01:00:52 · 5569 阅读 · 1 评论