美文网首页go学习
golang技术笔记之goroutine

golang技术笔记之goroutine

作者: 知本集 | 来源:发表于2018-01-03 10:59 被阅读9次

进程、线程和协程:

1.进程:分配完整独立的地址空间,拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程的切换只发生在内核态,由操作系统调度。

2.线程:和其它本进程的线程共享地址空间,拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程的切换一般也由操作系统调度(标准线程是的)。

3.协程:和线程类似,共享堆,不共享栈,协程的切换一般由程序员在代码中显式控制。

一般来说,如果没有显式的让出CPU,就会一直执行当前协程。

goroutine可以看作是协程的go语言实现;

浅析goroutine:

它的调度一定程度上是由go运行时(runtime)管理。其好处之一是,当某goroutine发生阻塞时(例如同步IO操作等),会自动出让CPU给其它goroutine。

goroutine的使用非常简单,例如foo是一个函数:

go foo()

就一个关键字go搞定了,这里会启动一个goroutine执行foo函数,然后CPU继续执行后面的代码。

goroutine是非常轻量级的,它就是一段代码,一个函数入口,以及在堆上为其分配的一个堆栈(初始大小为4K,会随着程序的执行自动增长删除)。所以它非常廉价,我们可以很轻松的创建上万个goroutine。

相关文章

  • golang技术笔记之goroutine

    进程、线程和协程: 1.进程:分配完整独立的地址空间,拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程的切换只发...

  • 【技术】Golang——goroutine、channel

    goroutine goroutine 是由 Go 运行时环境管理的轻量级线程。go f(x, y, z)开启一个...

  • go学习笔记(四)——并发

    1. goroutine 什么是goroutine goroutine是golang的最小执行单元,每个go程序至...

  • go

    https://golang.google.cn/ goroutine简单示例 goroutine将结果通过cha...

  • Golang源码之Goroutine

    原文来自博客园作者: q303248153 Golang最大的特色可以说是协程(goroutine)了, 协程让本...

  • goroutine 及channel

    本文主要介绍goroutine 和channel的使用。 基础知识介绍 goroutine 是 golang 中在...

  • golang channel 系统学习

    goroutine是个啥 使用golang的channel之前,我们需要先了解go的goroutine。Go 语言...

  • Golang goroutine

    goroutine 是 Golang的最大卖点之一,它让并发编程变的十分简单,仅仅使用 go关键字就能快速的创建g...

  • Golang goroutine

    goroutine简介 goroutine是go语言中最为NB的设计,也是其魅力所在,goroutine的本质是协...

  • golang goroutine

    其实用go也用了一段时间,我是看视频入门的,然后去买书,反正来来回回用了一年多的时间,很多点知道怎么用,相关知识也...

网友评论

    本文标题:golang技术笔记之goroutine

    本文链接:https://www.haomeiwen.com/subject/xiycixtx.html