Golang教程:goroutine协程
在上一篇中,我们讨论了并发,以及并发和并行的区别。在这篇教程中我们将讨论在Go中如何通过Go协程实现并发。 什么是协程Go协程(Goroutine)是与其他函数或方法同时运行的函数或方法。可以认为Go协程是轻量级的线程。与创建线程相比,创建Go协程的成本很小。因此在Go中同时运行上千个协程是很常见的。 Go协程对比线程的优点
如何创建一个协程?在函数或方法调用之前加上关键字? 让我们创建一个协程: package main import ( "fmt" ) func hello() { fmt.Println("Hello world goroutine") } func main() { go hello() fmt.Println("main function") } 第11行, 运行这个程序,你将得到一个惊喜。 程序仅输出了一行文本:?
我想你已经知道了为什么我们的协程为什么没有运行。在11行调用? 让我们修复这个问题: package main import ( "fmt" "time" ) func hello() { fmt.Println("Hello world goroutine") } func main() { go hello() time.Sleep(1 * time.Second) fmt.Println("main function") } 上面的程序中,第13行,我们调用?time?包的 Sleep?函数来使调用该函数所在的协程休眠。在这里是让主协程休眠1秒钟。现在调用? 在主协程中使用 Sleep 函数等待其他协程结束的方法是不正规的,我们用在这里只是为了说明Go协程是如何工作的。信道可以用于阻塞主协程,直到其他协程执行完毕。我们将在下一篇教程中讨论信道。 ? ? ? 本文转自:https://blog.csdn.net/u011304970/article/details/75096323?locationNum=3&fps=1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |