Go (或Golang )是Google 在2007 年开发的一种开源编程语言,出自Robert Griesemer 、Rob Pike 和Ken Thompson 之手。2009 年11 月10 日, Google Open Source Blog 向全球发布了这款语言:公告指出Go 的主要目标是“兼具Python 等动态语句的开发速度和C 或C ++等编译型语言的性能与安全性”。
使用Goroutine
Goroutine可以应对网络延迟,通常操作是顺讯自上而下依次执行,但在复杂的环境下,顺序执行反而会出现各种各样的问题。例如,你需要获取全国各地的天气情况,在执行这种请求时候,可能受到网络的影响,不能及时响应,并且每个请求后响应的时间也不尽相同,这个时候就需要等待响应,让程序去做其他的请求,减少了等待的时长,提高了执行的效率。
就像你可以边听歌、边走路一样,而不必先听歌,歌停了,再走路。
举个例子:
可以看到,顺序执行下去,执行2个动作,花费了8秒。
有没有一个可能,边听歌,边走路呢?这样就能大大节约时间了呢?
将上面的例子进行下改动
20行:添加了go关键字
21行:添加了go关键字
22行:设置了等待时间,这个等待时间是为了阻止程序退出
通过上面的简单改动,“开始听歌”和“开始走路”就是同步开始,而“停止走路”先停止,“停止听歌”接着停止,全部花费时间5秒,这样就大大减少了操作的时间。
虽然采用time.sleep来阻止程序立即退出并不是最好的方法,将在后面的学习中学习采用通道来管理Goroutine。
开发人员在使用Goroutine无需直接管理线程,并且创建1个Gotoutine所消耗的内存只有几KB,因此,采用Goroutine解决并发是一个行之有效的方法。