以下代码不会有任何打印。原因是:channel ch 在make 时是无缓冲区的channel。无缓冲区的channel 发送一个数据进入后需要等待这个数据被消耗才能继续发送下一个数据。然而getFromChannel 方法中的使用了锁。导致与sendToChannel 方法中使用的锁,形成死锁。如果指定ch 的缓冲区长度为10,则可以避免。当然也可以取消sendToChannel 方法中的锁。


var ch chan int
var mutex sync.Mutex func main() {
ch = make(chan int)
go getFromChannel()
go sendToChannel()
select { }
} func sendToChannel() {
mutex.Lock()
for i := 0; i < 10; i ++ {
ch <- i
}
mutex.Unlock()
} func getFromChannel() {
for {
select {
case c := <- ch:
mutex.Lock()
fmt.Println(c)
mutex.Unlock() }
}
}

最新文章

  1. Android View的几个位置坐标关系
  2. 学习Jquery
  3. PHP判断手机号码是否合法
  4. POJ 1027 The Same Game(模拟)
  5. hdu 4850 Wow! Such String! 欧拉回路
  6. Ubuntu12.04 下搭建Java开发环境
  7. for-in用法
  8. 【翻译】Ext JS最新技巧——2014-10-30
  9. canvas的学习
  10. HDU1789 Doing Homework again
  11. Linux学习之CentOS(十八)-----恢复Ext3下被删除的文件与 使用grep恢复被删文件内容(转)
  12. require.js使用步骤
  13. Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器
  14. NOIP-无线网路发射器选址
  15. 电脑忘记WiFi密码了,但又想知道,该怎么办?
  16. 升级linux python
  17. color xml arm相关
  18. codeforces 957 C Three-level Laser
  19. chrome插件 - Manifest文件中的 background
  20. ASP.NET Core Linux环境安装并运行项目

热门文章

  1. 关于MounRiver编译器配置的若干问题
  2. git 删除本地分支以及远程分支
  3. MYSQL 5.7及以上【ONLY_FULL_GROUP_BY】报错和解决方法
  4. vue-seamless-scroll 组件用法-区域内容滚动效果
  5. webapi fromurl frombody
  6. 关闭win10“快速启动”功能
  7. C# 数据结构之嵌套加法、嵌套乘法
  8. jdk下载及配置
  9. 4-发票校验-不可能为条目1000 DIF确立帐户-消息号 M8147
  10. noi 1.5 42画矩形