
golang
yexis
这个作者很懒,什么都没留下…
展开
-
golang GMP调度原理
GMP原理与调度 一、原理解析 go语言的协程 线程分为“内核态”线程和“用户态”线程,一个“用户态“线程必须要绑定到内核态线程。 在Go里面,更加细分。”内核态“线程叫线程(thread),”用户态“线程叫协程(co-routine) goroutine来自协程的概念。让一组可复用的函数运行在一组线程之上,即使有协程阻塞,该线程的其他协程也可以被runtime调度,转移到其他可运行的线程上 Goroutine的特点: 占用内存小(几KB) 调度灵活(runtime调度) 定义 全局队列:存放等待运转载 2020-07-16 16:29:24 · 2083 阅读 · 0 评论 -
golang channel源码解析
go channel源码分析 不要通过共享内存来通信,而要通过通信来实现内存共享。 一、通道是什么? 通道是可以让一个goroutine发送特定值到另一个goroutine的通信机制 无缓冲通道: 也称同步通道,无缓冲通道上的发送操作将会阻塞,直到另一个goroutine在对应的通道上执行接收操作,此时传送完成,两个goroutine才能继续执行。反之亦然。 缓冲通道: 缓冲队列有一个缓冲队列,队列的最大长度在创建的时候通过make的容量参数来设置。 缓冲通道上的发送操作在队列的尾部插入一个元转载 2020-07-16 16:26:12 · 651 阅读 · 0 评论