## 前言 为了更好地理解本文中提及的内容,这些是需要首先阅读的好文章: 下面列出 4 篇文章的索引: - 1. [Go 语言机制之栈和指针](https://studygolang.com/articles/12443) - 2. [Go 语言机制之逃逸分析](https://studygolang.com/articles/12444) - 3. [Go 语言机制之内存剖析](https://studygolang.com/articles/12445) - 4. [Go...
-
For Range 的语义
-
【深度知识】GO语言的goroutine并发原理和调度机制
1. 线程(Thread)和协程(Coroutine)的定义 Go语言最大的特色就是从语言层面支持并发(Goroutine),Goroutine是Go中最基本的执行单元。事实上每一个Go程序至少有一个Goroutine:主Goroutine。当程序启动时,它会自动创建。 为了更好理解Goroutine,现讲一下线程和协程的概念。 线程(Thread):有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄...
-
goroutine、channel原理
goroutine原理 概念介绍 并发 ⼀个CPU上能同时执⾏多项任务,在很短时间内,CPU来回切换任务执⾏(在某段很短时间内执⾏程序a,然后⼜迅速得切换到程序b去执⾏),有时间上的重叠(宏观上是同时的,微观仍是顺序执⾏),这样看起来多个任务像是同时执⾏,这就是并发。 并⾏ 当系统有多个CPU时,每个CPU同⼀时刻都运⾏任务,互不抢占⾃⼰所在的CPU资源,同时进⾏,称为并⾏。 进程 CPU在切换程序的时候,如果不保存上⼀个程序的状态(context--上下⽂),直接切换下⼀个程序,就会丢失上⼀个...