defer的主要作用就是在当前函数或者方法返回之前调用一些用于收尾的函数,例如关闭文件描述符、关闭数据库连接以及解锁资源。

只需要在被调用的函数前边加上go关键字,就可以轻松的开启并发执行。

package mainimport ("fmt""sync""time"
)var (lock    sync.MutexnumSum  int = 0counter int = 1
)func main() {for i := 1; i < 10; i++ {go addNum()}time.Sleep(time.Millisecond * 10)
}func addNum() {lock.Lock()defer lock.Unlock()fmt.Print(counter, "*", counter, "+", numSum)counter++numSum += counter * counterfmt.Println("=", numSum)}

11+0= 4
2
2+4= 13
33+13= 29
4
4+29= 54
55+54= 90
6
6+90= 139
77+139= 203
8
8+203= 284
9*9+284= 384

go语言基础到提高(13)-同步相关推荐

  1. go语言基础到提高(3)-变量

    package main import("fmt" ) func main(){var x intx=100var y int =100z:=100.11// z:=102.12 ...

  2. go语言基础到提高(12)-函数类型与函数变量

    ```go```go```go package mainimport ("fmt" )type UpdateList func(lst []int) (done bool)//函数 ...

  3. go语言基础到提高(10)- 包及方法

    src\2.go package mainimport ("test" )func main() {test.Info() } src\test\test.go package t ...

  4. go语言基础到提高(9)-go ide

    LiteIDE is a simple, open source, cross-platform Go IDE. 支持的操作系统 Windows x86 (32-bit or 64-bit) Linu ...

  5. go语言基础到提高(7)-数组

    package main import("fmt")func main(){var sz1 [5]intfor i:=1;i<5;i+=1{sz1[i]=i*5}sz2:=[ ...

  6. go语言基础到提高(5)-结构

    > go run 1.go zhangsang 25 {lisi 28} 张三 22 package main import("fmt") type student stru ...

  7. go语言基础到提高(1)-hello,world

    建立一个目录,然后在里面编辑程序1.go $vim 1.go package main func main(){print("hello,world\n") } 开始编译运行 $ ...

  8. mxnet基础到提高(13)--Activation激活函数

    支持以下激活函数: relu: Rectified Linear Unit, y=max(x,0)y=max(x,0) sigmoid: y=11+exp(−x)y=11+exp(−x) tanh: ...

  9. Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)

    文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...

最新文章

  1. 2021年大数据ELK(十二):Elasticsearch编程(环境准备)
  2. inno setup插件可选安装代码_代码检测工具(sonar docker方式安装)
  3. Nature调查:6%中国科研人年薪超50万元!
  4. CodeSmith 学习资料收集
  5. 震撼三观:从细胞到宇宙
  6. Windows10+GPU版 pytorch 安装
  7. matlab里sconv原理_第6章 信号的时域分析及Matlab实现.ppt
  8. matlab 返回变量类型的命令,MATLAB主要命令汇总
  9. 820. 单词的压缩编码
  10. DBGrid 应用全书
  11. python 驱动级鼠标_电竞极速鼠标
  12. mysql5.7 dmg安装
  13. 零基础学习Java编程培训需要了解哪些知识
  14. java调用dll 指针参数_java调用c dll,指针参数和结构体参数搞定
  15. Java8 拉姆达与集合中对象处理方式记录
  16. 跟我StepByStep学FLEX教程------概述(原创)
  17. css裁剪属性----clip-path
  18. 程序语言 | 编程范式/泛型一览
  19. 在线学习平台网站分享 (持续更新)
  20. Redis基础知识+安装+常用命令使用

热门文章

  1. Activiti数据库
  2. 优秀产品必经的14个拷问
  3. opencv如何截取子图像
  4. 游戏中的对象资源信息管理
  5. 谈谈你对MVC和三层架构的理解?(月薪三万的面试题)
  6. 阿里云服务器购买后的配置指南
  7. JavaScript对象和数组
  8. WebRTC手记之初探
  9. PHP面向对象设计模式
  10. 【转】自旋锁及其衍生锁