advanced-go-programming-book icon indicating copy to clipboard operation
advanced-go-programming-book copied to clipboard

1.5.1 Goroutine和系统线程 这一章的内容写得有问题

Open p-moon opened this issue 3 years ago • 3 comments

提示:哪一章节的问题,建议如何修改

携程和线程的区别就在于协程重做了上下文切换,减少了内核态和用户态的交互。

而不是每个系统级的线程都会有一个固定大小的栈,一个进程中所有的线程和携程的堆栈空间都是共享的。

p-moon avatar Aug 12 '20 09:08 p-moon

协程的栈和传统的线程栈都不是一回事的呀

cch123 avatar Sep 08 '20 16:09 cch123

那只要你开辟或者复制内存了,性能就绝对不会高 @cch123 ,而且携程的栈指的应该是函数栈,堆也是,存的都是类似的局部变量。协程和线程最大的区别就在于上下文切换上做了优化,如果还需要开辟额外的空间,那么大概率不会比线程快的

p-moon avatar Sep 10 '20 09:09 p-moon

Goroutine和线程的本质区别:Go编译器认识Goroutine的Go语法,可以开很多优化后门;而OS不认识写线程的编程语言,只能采用保守策略。

chai2010 avatar Sep 23 '21 10:09 chai2010