Golang语言--Coroutine可能存在的死锁

直接上代码:

1. 第一种情况, 如果没有select{}, main 主线程不会等待coroutine运行,导致coroutine得不到机会运行。

You are requesting eventual scheduling (using the two go statements) of two goroutines and then you exit main without giving the scheduler a chance to do anything.

有了select, 程序正常运行。

2. coroutine有机会运行,但是会发生死锁, fatal error: all goroutines are asleep - deadlock!

The goroutine executing func1 exited, ditto for func2. The main goroutine is blocked with no hope to recover while no other goroutine can be scheduled.

3. 第三种情况, 正常运行。

4. 实现上面的目的的另外一种方法:

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-05-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏漫漫深度学习路

linux 非常用命令总结

如何删除ppa(我们在安装软件的时候,教程一般都会让添加ppa源,但是几乎没有教程会告诉你怎么删除) # 添加ppa源 sudo add-apt-reposit...

2055
来自专栏我的博客

MYSQL主从同步

1、解决问题 数据分布不同节点、负载均衡、读写分离、容灾备份、高可用应用、故障切换等 2、同步原理 Master将操作记录到bin-log salve的一个线程...

3889
来自专栏Python中文社区

每天一个Linux命令:chmod

格式 chmod [options] who operator permission file-list (符号模式) chmod [options] mode...

2166
来自专栏不想当开发的产品不是好测试

postman也可以使用F12功能

背景: 做过接口测试的话,大多数都知道或使用过postman工具,使用postman的时候,有时候希望也可以像chrome一样使用F12功能,这样方便观察一些数...

2239
来自专栏python学习之旅

Python笔记(三):构建发布模块

(一)     准备工作 1.   新建一个模块(名称自定义),存放要发布的模块代码。 2.   新建一个setup.py的模块(存放模块的元数据,描述相关信息...

3818
来自专栏java架构师

Hadoop学习2--Linux准备及环境准备

1、环境安装: 虚拟机:VMware Player 系统:Ubuntu12 注意事项:注意位数,包括系统,java,Hadoop 2、切换账号 当前登录账号是自...

2946
来自专栏深度学习之tensorflow实战篇

怎样设置虚拟机和主机文件共享

打开虚拟机,点击编辑虚拟机设置.如图: ? ubuntu默认root密码不可用,需要用普通用户登录后设置: 输入sudo passwd root ...

3746
来自专栏从零开始的linux

用shell添加用户

调试添加用户的脚本 # sh -x useradd.sh alex + '[' 1 -lt 1 ']' + id alex + useradd alex + ...

3356
来自专栏电光石火

删除eclipse多余的工作空间

找到eclipse\configuration\.settings\org.eclipse.ui.ide.prefs文件,配置的命名空间就在这个文件中,双击打开...

23810
来自专栏Python小屋

使用Python把多个图片拼接成为长图

本文主要演示Python扩展库pillow中Image对象的paste()方法用法,并且测试用的所有图片具有相同尺寸,大家可以在此基础上进行改写和扩展。 另外...

4315

扫码关注云+社区

领取腾讯云代金券