前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么使用 Go 并发编程?

为什么使用 Go 并发编程?

作者头像
frank.
发布于 2024-11-19 07:56:16
发布于 2024-11-19 07:56:16
7600
代码可运行
举报
运行总次数:0
代码可运行

大家好,我是 frank,「Golang 语言开发栈」公众号作者。

01 、介绍

所谓“并发编程”,就是在程序中使用并发。不管是作为客户端,调用接口,还是作为服务端,处理客户端请求,并发处理,都可以提升程序的性能。

不同的编程语言,实现并发的方式不同,单进程单线程语言,可以通过启动多个进程,实现并发,该方式的问题是进程之间通信比较复杂,并且占用资源高;单进程多线程语言,可以通过多线程,实现并发,该方式的问题是线程之间切换成本较高,比较耗费 CPU。

而 Go 语言实现并发相对来讲,比较简单,只需在函数或方法之前,使用 go 关键字,即可启动一个 goroutine,执行该函数或方法,并且占用资源低,goroutine 与线程不同,它是在用户态。 Go 语言中的 goroutine 以队列的形式,由 Go 运行时调度器调用,调度器模型是 GPM。

02 、Go 并发编程

我们通过简单示例,介绍一下 Go 怎么实现并发编程。

示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func main () {
    fmt.Println("Hello World!")
    go func () {
        fmt.Println("goroutine run")
    }
    time.Sleep(time.Second())
}

阅读上面这段代码,我们在 main 函数中,使用 go 关键字启动一个 goroutine 执行一个匿名函数,为了确保在 main 函数退出之前, goroutine 可以执行,我们使用 time.Sleep() 延迟 main 函数退出。

在实际项目开发中,我们通常会使用同步原语控制 goroutine 的执行,此处为了易于理解,暂时不引入同步原语。

03 、使用 Go 并发编程的原因

我们在了解了并发编程的优势,和使用 Go 语言并发编程的实现方式之后,读者朋友们可能已经总结出使用 Go 并发编程的原因。

Go 语言实现并发,仅需在函数或方法之前,使用关键字 go 即可启动一个 goroutine 执行该函数或方法,并且占用的资源也非常低。

但是,并发编程也有劣势,比如会引入数据竞态、死锁等问题。而 Go 语言的 sync 包,提供了很多方法来解决并发引入的问题。另外,还有 channel 和 select、context 也可以解决并发引入的问题。

总体而言,Go 语言相对其它编程语言而言,编写并发程序更方便。

04 、总结

本文我们介绍了并发编程的优势和劣势,比较了其它编程语言与 Go 语言在并发编程上的不同,Go 语言更易用和更轻量,更加适合编写并发程序。

限于篇幅,本文未详细讲解 GPM 模型调度器,感兴趣的读者朋友们,建议自行查找相关资料,这将有助于更加深入理解 Go 并发编程。

---

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言开发栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档