教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go语言runtime.Gosched

go语言runtime.Gosched

发布时间:2021-12-07   编辑:jiaochengji.com
教程集为您提供go语言runtime.Gosched等资源,欢迎您收藏本站,我们将为您提供最新的go语言runtime.Gosched资源

func say(s string) {

<span style="white-space:pre"/>for i := 0; i < 2; i {

<span style="white-space:pre"/>runtime.Gosched()

<span style="white-space:pre"/>fmt.Println(s)

<span style="white-space:pre"/>}

}


func main() {

<span style="white-space:pre"/>go say("world")

<span style="white-space:pre"/>say("hello")

}

输出:

hello

world

hello

1、先输出了hello,后输出了world

2、hello输出了2个,world输出了1个(因为第2个hello输出完,主线程就退出了,第2个world没机会了)

如果把代码中的runtime.Gosched()注释掉,执行结果为:

hello

hello

因为say("hello")这句占用了时间,等它执行完,线程也结束了,say("world")就没有机会了。

从这里也可以看出,goroutine并不是真正的“并行”,goroutine都在一个线程里,它们之间通过不停的让出时间片轮流运行,达到类似运行的效果。



到此这篇关于“go语言runtime.Gosched”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
go语言runtime.Gosched
Go 语言传统的同步 goroutine 的机制
goroutine/Gosched/Goexit/GOMAXPROCS
go语言并发编程
go语言并发之MPG模型
想系统学习GO语言(Golang
Golang基础--常见坑
2018年最全Go语言教程零基础入门到进阶实战视频
Go语言学习3----Go语言特色
Go 语言一本通

[关闭]
~ ~