美文网首页个人学习
Go语言并发简述

Go语言并发简述

作者: 码二哥 | 来源:发表于2020-02-13 09:21 被阅读0次

    参考:
    http://c.biancheng.net/view/4356.html

    关键点

    通过关键词汇,实现快速理解,记忆目的

    1、Go语言的并发特性是从语言层面支持的 ?
    Go 语言直接通过语言级的关键词go 就可以实现并发,这样的话,相比于其他操作系统层面的线程更加轻量

    2、Go语言的goroutine线程有什么不同
    A、goroutine是由Go语言的运行时runtime调度完成的,线程是由操作系统层面调度完成的

    1、Goroutine介绍

    Go语言层面实现了Goroutine之间的内存共享。

    1.1、如何创建Goroutine呢?

    • 使用Go语言层面的关键字go

    • 将go放到函数前面,即可
      这样的话,该函数在执行的时候,会作为一个独立的并发线程,此种线程在Go语言中被称为goroutine

    1.2、如何用goroutine呢或者说,使用goroutine的常见的几种写法

    //go 关键字放在方法调用前新建一个 goroutine 并执行方法体
    go GetThingDone(param1, param2);
    
    //新建一个匿名方法并执行
    go func(param1, param2) {
    }(val1, val2)
    
    //直接新建一个 goroutine 并在 goroutine 中执行代码块
    go {
        //do someting...
    }
    

    因为 goroutine 在多核 cpu 环境下是并行的,如果代码块在多个 goroutine 中执行,那么我们就实现了代码的并行。

    注意
    上面提到的 go 直接 添加 代码块方式 是不允许的。

    go 代码块 协程方式

    2、channel介绍

    2.1、channel特性

    • channel 是Go语言在语言级别提供的 goroutine 间的通信方式。

    • 可以使用 channel 多个 goroutine 之间传递消息。

    • channel是进程内的通信方式,而不是进程间的通信方式

    • channel是跟类型相关的,也就是说,一个channel只能传递一种类型的值。

    2.2、如何创建一个channel呢?

    注意点:
    必须使用make来创建

    ci := make(chan int)
    cs := make(chan string)
    cf := make(chan interface{})
    
    

    相关文章

      网友评论

        本文标题:Go语言并发简述

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