知识卡片
goroutine是线程的多路复用
内容
goroutine看起来像轻量级线程,但它本质上不是线程,而是运行时对操作系统线程的多路复用——启动一个goroutine只需要几KB的栈空间(远小于操作系统线程的默认栈),且栈会按需伸缩,所以同一个进程能轻松承载成千上万个goroutine,这在直接使用系统线程时是不可想象的。发散:这是M:N调度模型的典型实现——把M个goroutine调度到N个系统线程上,用户态调度器接管了原本要靠操作。
参考来源
- 位置:《Go Web编程》第9章《发挥Go的并发优势》(源文件:_epub-src/OEBPS/text00023.html)
- 结论依据:原文在该章节围绕“goroutine看起来像轻量级线程,但它本质上不是线程,而是运行时对操作系统线程的多路复用——启动一个gor…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:第9章 发挥Go的并发优势 本章主要内容 从原理上理解并发和并行 学习如何使用goroutine以及通道 在Web应用中使用并发特性 Go语言一个广为人知的特点就是,可以更容易地写出错误更少的并发程序。本章将介绍并发这一技术,并讨论Go语言的并发模型以及设计。除此之外,我们还会深入地了解Go语言为实现并发而提供的两个特性,它们分别是gor…