Loading... ## 前言 Golang,由于它本身就支持并发,所以对于开发者来说,能够快速的开发出具备高并发的高性能程序,所以,这篇文章主要说一下 `go`怎么简单快速的实现高并发 在 `Python` 中,由于 `Python`本身的特性,仅仅支持伪多线程,你要学习多进程,就需要学习很多多线程的库的调用,要使用更高性能的协程,就需要了解支持并发的库 `asyncio`,`aiohttp` 等,并且学习难度是比较高的。 但是在Golang中,你不需要学习如何创建进程池或者线程池,也不需要知道什么情况下使用多线程,什么时候使用多进程,因为你没得选,也不需要选,它原生提供的 `goroutine` (也即协程)已经足够优秀,能够自动帮你处理好所有的事情,而你要做的只是执行它,就这么简单。 一个 `goroutine` 本身就是一个函数,当你直接调用时,它就是一个普通函数,如果你在调用前加一个关键字 `go` ,那你就开启了一个 `goroutine`。 ## 详解 代码: ```go package main import "fmt" func handle() { fmt.Println("hello golang") } func main() { go handle() fmt.Println("hello main") } ```  可以看到,我们使用了 `go`去调用了 `handle`,但是并没有输出 `handle`中的 `hello golang`,这是为什么呢? 因为创建一个 `goroutine`也是需要时间的,即使这个时间很短,但是程序已经执行完了,所以只输出了 `main`中的 `hello main` 所以,我们在 `main` 中休眠一下: ```go package main import ( "fmt" "time" ) func handle() { fmt.Println("hello golang") } func main() { go handle() fmt.Println("hello main") time.Sleep(1 * time.Second) } ```  可以看到两个都成功输出了,并且由于使用了 `go`去调用 `handle`,然后创建 `goroutine`消耗了时间,但是程序并没有阻塞,而是直接继续运行,输出了 `hello main`,然后子啊休眠的过程中,`goroutine`创建完成,执行 `handle`,输出 `hello golang`,休眠结束,程序也结束运行 下面的例子可以更好的看到并发的效果: ```go package main import ( "fmt" "time" ) func gohandle(name string) { for i := 0; i < 5; i++ { fmt.Printf("In goroutine %s\n", name) time.Sleep(10 * time.Millisecond) } } func main() { go gohandle("协程1号") go gohandle("协程2号") time.Sleep(time.Second) } ```  可以看到,两个协程就像两个线程一样,并发执行 ## 写在最后 通过几个简单的例子,可以看出,Go的这种强大的并发特性,将同步代码转化为异步代码只需要一个简单的关键字:`go`,就可以实现,而不需要过多的代码实现 本文只是简单的举个列子,下次会更加优雅的实现协程 <hr class="content-copyright" style="margin-top:50px" /><blockquote class="content-copyright" style="font-style:normal"><p class="content-copyright">版权属于:JsOnGmAX</p><p class="content-copyright">本文链接:<a class="content-copyright" href="https://jsong.cn/archives/402.html" target="_blank" >https://jsong.cn/archives/402.html</a></p><p class="content-copyright">博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议 如有侵权 请联系本人删除</p></blockquote> 最后修改:2020 年 07 月 30 日 11 : 19 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付
滴!学生卡!打卡时间:下午4:00:46,请上车的乘客系好安全带~