微信号:Golangweb

介绍:欢迎来到 Go语言社区 社区网址:www.golangweb.com APP网址:app.golangweb.com 社区非公司性质,完全个人爱好建立;做的不好的地方大家见谅.

厚土Go学习笔记 | 38. goroutine轻量级线程

2018-02-11 23:21 厚土火焰山

菅俊菠,70后IT人,程序员到产品经理/项目经理,先后涉猎教育、企管、煤矿、电商等多个领域的系统开发和团队管理工作。擅长业务分析、团队管理,关注前沿技术,目前注意力在golang、kotlin。微信号:hotu2010

共 1084 字,阅读需 3 分钟

goroutine是由 Go 运行时环境管理的轻量级线程。

在一个包中有一个函数

say(s string)

goroutine使用 go say("xxx") 来开启一个新的 goroutine 执行。

运行下面的程序,观察运行结果。

package main

import (
    "time"
    "fmt"
)

func say(s string)  {
    for i := 0; i < 5; i++{
        time.Sleep(100*time.Millisecond)
        fmt.Println(s)
    }
}

func main() {
    go say("Hello")
    say("world")
}

你会发现输出的 Hello 和 world ,没有固定的先后顺序。因为它们是两个 goroutine 在执行。

如果系统运行的太快,可能你看不到所有的 go say("Hello") 的运行结果。这时候,你可以修改 time.Sleep(100*time.Millisecond) 为 time.Sleep(500*time.Millisecond) 或者更长的时间,就能够看到所有的运行结果了。

 
Golang语言社区 更多文章 解决连通性问题的四种算法 Go语言实现控制台贪吃蛇(附带神操作视频) 使用 Go 语言完成 HTTP 文件上传与下载 Golang 中的并发限制与超时控制 Golang切片与函数参数“陷阱”
猜您喜欢 从虚拟化到SDDC 第一代是CPU,第二代是GPU,第三代是什么?AI芯片! 【PHP】包管理工具Composer 妙用php中的register_shutdown_function和fastcgi_finish_request Growth Hacking让Facebook首页5年未改版,人人网改版自掘坟墓的背后,缺少的是什么