Go并发编程

本文概述

  • Goroutines
  • 并发示例
大型程序分为较小的子程序。同时运行其较小组件的程序称为并发。
Goroutines同时运行的应用程序部分称为goroutines。 Goroutine和通道用于构造并发程序。
进程是在计算机中运行的独立执行实体, 该计算机在内存中自己的地址空间中运行。进程具有同时执行实体的线程。线程共享进程的相同地址空间。
Goroutine很轻巧, 比线程轻得多。 Goroutine在相同的地址空间中运行, 因此必须同步访问共享内存。这可以通过sync包来完成, 但是建议使用通道来同步goroutine。
goroutine被实现为函数或方法。它用“ go”关键字调用(调用)。当goroutine完成时, 没有任何内容返回给调用者函数。
并发示例
package main import ( "fmt" "time" "sync" ) var wg = sync.WaitGroup{}func main() { wg.Add(2) go fun1() go fun2() wg.Wait() } func fun1(){ fori:=0; i< 10; i++{ fmt.Println("fun1, -> ", i) time.Sleep(time.Duration(5*time.Millisecond)) } wg.Done() } func fun2(){ for i:=0; i< 10; i++{ fmt.Println("fun2, -> ", i) time.Sleep(time.Duration(10*time.Millisecond)) } wg.Done() }

【Go并发编程】输出:
fun2, -> 0 fun1, -> 0 fun1, -> 1 fun2, -> 1 fun1, -> 2 fun1, -> 3 fun2, -> 2 fun1, -> 4 fun1, -> 5 fun2, -> 3 fun1, -> 6 fun1, -> 7 fun2, -> 4 fun1, -> 8 fun1, -> 9 fun2, -> 5 fun2, -> 6 fun2, -> 7 fun2, -> 8 fun2, -> 9

    推荐阅读