【Golang】- runtime.Goexit()

简介: 【Golang】- runtime.Goexit()

文章目录

Go语言的并发模型基本上遵照了CSP模型,goroutine间完全靠channel通信,没有像Unix进程的wait或waitpid的等待机制,也没有类似“POSIX Thread”中的pthread_join的汇合机制,更没有像kill或signal这类的中断机制。每个goroutine结束后就自行退出销毁 ,不留一丝痕迹。

/**
Goexit
调用runtime.goExit()将立即终止当前goroutine执行,调度器
确保所有已注册defer延迟调度被执行。
*/
 
package main
 
import (
  "fmt"
  "runtime"
)
 
func  main(){
  go func(){
      defer fmt.Println("A defer go")
    func(){
      defer fmt.Println("B defer go")
      runtime.Goexit()
      fmt.Println("B")
    }()
    fmt.Println("A")
      
  }()//别忘了()
  //阻塞,防止结束
  for{}
  
  
  //输出
  /**
  F:\goWorkSpace\study\05协程>go run 06_runtimeGoexit.go
  B defer go
  A defer go
  */
  
  
}

调用runtime.goExit()将立即终止当前goroutine执行,调度器确保所有已注册defer延迟调度被执行。

目录
相关文章
|
8月前
|
Java 关系型数据库 MySQL
Golang总结(1)
Golang总结(1)
|
5月前
|
人工智能 Go
Golang 里的 context
Golang 里的 context
33 0
|
7月前
|
IDE Java Go
Golang
【6月更文挑战第26天】
60 1
|
8月前
|
Go
【golang】Compile 和 MustCompile
【golang】Compile 和 MustCompile
224 0
|
8月前
|
监控 安全 Go
golang面试:golang中的context(四)
golang面试:golang中的context(四)
80 0
|
测试技术 Go
Golang中函数的使用
Golang中函数的使用
88 0
|
Go
Golang 中 Context 的理解
我以前对Context的理解,就是从字面上理解:上下文,一个请求链路中一直存在的某信息。打个比方,Client请求A-Service到B-Service,B-Service再到C-Service,在这个请求链路中,上游就会将内容传递给下游,A-->B,B--->C是保持一个请求过程的。Context是程序单元的一个运行状态、现场、快照。结合这句话,我对Context的理解是Context用于保证一个Request在同一个生命周期内。 在Go语言中,程序单元指的就是Goroutine。 所以,一个Request,可能会在多个goroutine中去处理,多个goroutine可能共享Reque
113 0
|
安全 Java 编译器
【Golang】Golang学习day01:初识Golang
主要介绍Go语言的相关背景以及Go语言的数据类型等基础。
190 0
【Golang】Golang学习day01:初识Golang
|
存储 安全 Java
Golang之context
周末的快乐时光总是很短暂。 今天天气不错,有点太阳。去附近的商场吃了一顿“高老九重庆火锅”,味道还行,主要是好久没吃火锅了~ 白天把家里好好收拾了一下,感觉心情也跟着变好了。
261 0

热门文章

最新文章