Golang Go语言中让出时间片和顺序执行的区别?

发布于 1周前 作者 caililin 来自 Go语言

Golang Go语言中让出时间片和顺序执行的区别?
如题,既然如此那我让时间片存在的的意义何在呢?直接顺序执行不就好了?我能想到唯一的好处就是主协程等待其他协程用完,本人刚刚开始自学 go,想到什么问什么,要是比较弱智希望不要喷我。

8 回复

不知道你在想什么,建议学习操作系统课程,多进程多线程部分,思而不学则殆啊

更多关于Golang Go语言中让出时间片和顺序执行的区别?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我的意思是他具体应用在哪些场景

同 1L 看不懂,应用层程序是不知道时间片存在的。

我猜你是指:runtime.Gosched()
https://golang.org/pkg/runtime/#Gosched
文档说得很清楚了。
Gosched yields the processor, allowing other goroutines to run. It does not suspend the current goroutine, so execution resumes automatically.

#2 runtime.Gosched() 单纯这个方法在项目里面用的确实不多 但这是语言特性 你非得和应用结合什么鬼

我都说了,我刚刚看到那一块,,所以问一下,你回答就回答,秀优越是什么鬼?什么鬼?

我其实说的不是应用层,,而是说在实际使用的时候,它用在什么场景,,不过你已经说明白了,感谢

#4 你觉得是秀优越 好吧

在Golang(Go语言)中,让出时间片(yielding time slice)与顺序执行是两个不同的概念,它们对程序的行为和性能有显著影响。

顺序执行指的是程序按照代码的逻辑顺序,一行一行地执行下去。在Go中,这通常出现在单线程环境中,或者是在使用sync.Mutex等同步机制确保只有一个goroutine(轻量级线程)在某一时刻访问共享资源时。顺序执行的好处是简单易懂,但缺点是如果某个操作耗时较长,会阻塞整个程序的执行。

让出时间片则是Go语言并发编程中的一个重要概念。Go运行时环境会管理多个goroutine的调度,当某个goroutine执行了一定时间或遇到了阻塞操作时,它会主动让出时间片,让其他goroutine有机会执行。这种机制提高了程序的并发性和响应性,使得即使存在耗时操作,程序的其他部分也能继续运行。

让出时间片是通过Go的运行时调度器自动实现的,开发者通常不需要显式地控制。然而,通过合理使用select语句、channel以及非阻塞I/O等操作,可以间接地影响goroutine的调度行为,从而优化程序的性能。

总的来说,顺序执行和让出时间片是Go语言中控制程序执行流程的两种不同方式。顺序执行简单直接,适用于单线程或同步场景;而让出时间片则提高了程序的并发性和响应性,是Go语言并发编程的核心机制之一。

回到顶部