golang 如何处理死锁

互联网 19-12-30

死锁

死锁是指两个或两个以上的协程的执行过程中,由于竞争资源或由于彼此通信而造成的一种阻塞的现象,若无外力作用,他们将无法推进下去。 (推荐学习:go)

常见的死锁

场景1:一个通道在一个go程读写

func main() { 	c:=make(chan int) 	c<-88 	<-c }

场景二:go程开启之前使用通道

func main() { 	c:=make(chan int) 	c<-88 	go func() { 		<-c 	}() }

场景三:通道1中调用了通道2,通道2中调用通道1

func main() { 	c1,c2:=make(chan int),make(chan int) 	go func() { 		for  { 			select{ 				case <-c1: 					c2<-10 			} 		} 	}() 	for  { 		select{ 		case <-c2: 			c1<-10 		} 	}	 }

死锁的出现的情况很多,但都不外乎是争抢资源和数据通信引起。

解决死锁的方法是加锁。

以上就是golang 如何处理死锁的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: golang
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:golang 如何并发

相关资讯