go-GMP
* G — 表示 Goroutine,它是一个待执行的任务; * M — 表示操作系统的线程,它由操作系统的调度器调度和管理; * P — 表示处理器,它可以被看做运行在线程上的本地调度器; 协程调度,工作窃取
873 0
go select原理及使用场景
go select原理。类似c语言的多路复用,可以同时监听多个channel。当有channel可读可写之前会一直阻塞。两个 `case` 都是同时满足执行条件的,如果我们按照顺序依次判断,那么后面的条件永远都会得不到执行,而随机的引入就是为了避免饥饿问题的发生
474 0
go context上下文
1、context的解释在API之间或者方法调用之间,传递的除了业务参数之外的其他信息,比如traceId等。比如,服务端接收到客户端的HTTP请求之后,可以把客户端的IP地址和端口、客户端的身份信息 go,context,上下文,超时控制 channel
550 0
go channel原理及使用场景
源码解析typehchanstruct{qcountuint//Channel中的元素个数dataqsizuint//Channel中的循环队列的长度bufunsafe.Pointer//Channe go,channel,应用场景,互斥锁,限流器,循环链表
665 0
golang中的几种并发模式
1、for-select模式这种模式通常用在从多个通道读取数据packagemainimport("fmt""time")funcmain(){ch1,ch2:=mak channel,select,并发模式,扇入模式,扇出模式 done-channel模式 为了避免内存泄漏,goroutine应该有被触发取消的机制。父 Goroutine 需要通过一个名为 done 的只读通道向其子 Goroutine 发送取消信号。按照惯例,它被设置为第一个参数。
583 0
golang中的errgroup
1、串行执行假如我们需要查询一个课件列表,其中有课件的信息,还有课件创建者的信息,和课件的缩略图信息。但是此时我们已经对服务做了拆分,假设有课件服务和用户服务还有文件服务。我们通常的做法是,当我们查询 errgroup,waitgroup,任务编排
516 0