`

TODO:Go语言goroutine和channel使用

阅读更多

TODO:Go语言goroutine和channel使用

goroutine是Go语言中的轻量级线程实现,由Go语言运行时(runtime)管理。使用的时候在函数前面加“go”这个单词作为关键词,也是与普通函数的区别了。在函数前面加go关键字就可以创建一个新的goroutine进行并发执行。

go hello()

channel是Go语言提供的goroutine间的通信方式,我们可以使用channel在两个或多个goroutine之家传递消息。channel使用的关键字是用“chan”,声明一个传递类型为int的channel:

var ch chan int

下面小编举一个例子,监听进程被关闭后触发的事件。

监听信号,使用

signal.Notify(c, os.Interrupt)

第一个参数表示接收信号的channel

第二个及后面的参数表示设置要监听的信号,如果不设置表示监听所有的信号。

完整例子如下,本例在Ubuntu14.04的服务版测试通过。

Ctrl+c的效果如图:

Kill进程的效果如图

简单的例子,希望对您有帮助。


wxgzh:ludong86

qrcode_for_gh_6bb1f39ae99c_258
1
0
分享到:
评论

相关推荐

    Go语言中文文档高清版

    Go语言中文文档高清版 Go语言中文文档高清版是Go语言的官方文档,涵盖了Go语言的基本概念、语法、标准库、框架、数据库、网络编程、并发编程、微服务等方面的知识点。 一、基本概念 * Go语言的主要特征:静态类型...

    todo_golangTODOlist_Go_

    在并发处理方面,Go语言的goroutine和channel可以方便地实现多任务并行,例如,允许用户同时添加或修改多个任务,而不会阻塞其他操作。这极大地提高了应用程序的响应速度和用户体验。 在测试方面,Go提供了丰富的...

    Todo_Go

    3. **并发处理**:由于Todo_Go是用Go编写的,它能够充分利用Go的goroutine和channel来实现并发操作。这意味着在处理大量任务时,程序可以并行运行,提高效率。 4. **持久化存储**:为了保存用户的任务数据,Todo_Go...

    todo-go

    "todo-go" 是一个基于 Go 语言开发的待办事项(Todo)应用。Go,又称为 Golang,是由 Google 开发的一种静态类型的、编译式的、并发的、垃圾回收的、具有 C-like 语法的编程语言。Go 语言的设计目标是提高软件开发的...

    Go-todo-api

    - Go 的 `goroutine` 和 `channel` 使得并发编程变得简单。如果项目中有多个同时运行的任务,可能会用到这些特性。 10. **部署与运行**: - 项目运行时,通过执行 `./main` 可启动服务。这表明程序编译后生成的是...

    gotodo:只是一个简单的Go网络api可用作参考

    9. **并发处理**:Go 语言的 goroutine 和 channel 机制使得并发编程变得容易。在处理网络请求时,可能利用这些特性来提高服务器性能,例如通过并发处理多个请求,或者在保存到数据库之前使用 channel 来缓冲数据。 ...

    golang学习系列——16. 函数(2)

    栈溢出一般可以通过惰性求值的技术来解决:golang 的话可以使用 channel 和 goroutine 来实现惰性求值,举例如下 func generatenums() chan int { nums := make(chan int) num := 0 go func() { for { num++ ...

    beego.me上的demo

    - **性能优化**:Beego充分利用Go语言的并发特性,通过goroutine和channel实现高效并行处理。 ### 4. 学习与实践 通过这三个示例,你可以深入理解Beego框架的各个层面,包括路由配置、模型定义、数据库操作、模板...

Global site tag (gtag.js) - Google Analytics