Golang学习笔记(十八):并发编程初体验

Go语言是在语言层级上支持并发编程的,也就是原生编程,其余的编程语言实际并发编程须要借一些扩展库,而Go语言不须要。编程

传统的并发编程模型,即多线程并发模型,不一样的线程之间经过共享内存来达到线程通讯的目的。bash

而Go语言虽然也支持经过锁的模式来实现传统并发模型,但在Go语言中,更强大仍是对CSP(顺序通讯进程)并发模型的支持。多线程

在Go语言并发开发,最重要一句话是:并发

不要经过共享内存实现通讯,而要经过通讯实现内存共享编程语言

Go的并发编程模型只有两个概念:goroutine(协程)和channel(通道)。函数

若是你有其余编程语言并发开发的经验,能够先把goroutine理解为线程,固然goroutine和线程仍是有本质上差异的。ui

而channel则是不一样gorouine通讯的通道。spa

Go语言程序运行时,入口main函数所在的goroutine叫main goroutine。线程

在Go语言中,使用关键词go即可以轻松建立一个goroutine,开启并发编程。code

package main

import "fmt"

func main(){
    
    go test()
    fmt.Println("goroutine test1")
}

func test(){
    .Println("goroutine test2")
}

复制代码

在上面的示例中,咱们可能会看到test()函数中的输出,这是主函数退出时,全部goroutine都会退出执行。

package main

import "fmt"
import "time"

func main(){
    
    go test()
    fmt.Println("goroutine test1")
    time.Sleep(time.Second)
}

func test(){
    .Println("goroutine test2")
}

复制代码

经过time.Sleep()函数,使用主函数在一秒钟后退出,咱们能够看到test()函数所在的gotoutine也会执行。

相关文章
相关标签/搜索