38. goroutine轻量级线程

作者: 厚土火焱 | 来源:发表于2017-08-27 10:06 被阅读167次

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(100time.Millisecond) 为 time.Sleep(500time.Millisecond) 或者更长的时间,就能够看到所有的运行结果了。

相关文章

  • 38. goroutine轻量级线程

    goroutine是由 Go 运行时环境管理的轻量级线程。在一个包中有一个函数 goroutine使用 go sa...

  • Go并发编程

    Go天生为并发而生,使用go 关键字快捷启动线程(goroutine)轻量级线程也叫协程,一个goroutine大...

  • go入门(七)2018-07-19

    go并发 goroutine Go运行环境管理的轻量级线程go xxx 启动新的goroutine channel...

  • TODO:Go语言goroutine和channel使用

    TODO:Go语言goroutine和channel使用 goroutine是Go语言中的轻量级线程实现,由Go语...

  • Go 语言基础——协程(goroutine)&共享内存线程安全

    协程(goroutine)是更轻量级的线程 比Java中的线程效率更高 协程语法 一旦主goroutine中的代码...

  • 【go】并发1

    go并发,只需要通过 go 关键字来开启 goroutine 即可。 goroutine 是轻量级线程,gorou...

  • Go语言并发

    Go 语言支持并发,我们只需要通过 go 关键字来开启 goroutine 即可。goroutine 是轻量级线程...

  • 【技术】Golang——goroutine、channel

    goroutine goroutine 是由 Go 运行时环境管理的轻量级线程。go f(x, y, z)开启一个...

  • goroutine剖析

    goroutine是在后台运行的轻量级执行线程,同时它也是Go中实现并发的关键。 goroutine是什么 我们在...

  • GO语言基础(五)

    goroutine goroutine是由 Go 运行时管理的轻量级线程。 会启动一个新的 Go 程并执行 f, ...

网友评论

  • 43db03a6e51b:愿意到我们平台分享么
    imooc QQ:154699251
  • Hawken:好像只有9次。。。为什么不是10啊
    厚土火焱:那是因为当say("world")执行完了的时候,主函数关闭。整个程序运行结束了。而 go say("Hello") 还有一个协程没运行完。你可以调整一下 time.Sleep(100*time.Millisecond) 让休眠时间变的长一点,就可以看到所有的 goroutine 了。

本文标题:38. goroutine轻量级线程

本文链接:https://www.haomeiwen.com/subject/wvjbdxtx.html