Go 语言进阶与实战管理(02) | 青训营

49 阅读1分钟

Go 可以充分发挥多核优势,高效运行。

Go 语言的并发模型是 CSP(Communicating Sequential Processes)模型,它通过 goroutine 和 channel 来实现。goroutine 是 Go 语言并发的执行体,channel 是它们之间的通信机制。

协程与线程

协程是一种轻量级的线程,也叫微线程或用户态线程,由用户程序自己控制调度,而线程则是由操作系统内核控制调度。协程的调度完全由用户程序控制,线程的调度由操作系统内核控制。协程和线程的区别主要有以下几点:

  1. 协程是轻量级的线程,协程的调度完全由用户程序控制,线程是重量级的进程,线程的调度由操作系统内核控制。
  2. 协程和线程都可以实现程序的并发执行,但是协程的执行效率比线程高很多,协程的切换由用户程序自己控制,线程的切换由操作系统内核控制。
    func hello(i int){
        println("hello goroutine" + fmt.Sprint(i))
    }
    func hellogoroutine(){
        for i := 0; i < 10; i++ {
            go func(j int){
                println("hello goroutine" + fmt.Sprint(j))
            }(i)
        }
        time.Sleep(time.Second)
    }