GO教程
GO控制语句
GO高级

Go Concurrency

Go Concurrency

大型程序被划分为更小的子程序。同时运行较小组件的程序称为并发。

Goroutines

并发运行的应用程序部分称为goroutines。协程和通道用于构建并发程序。
进程是在机器中运行的独立执行实体,该实体在内存中自己的地址空间中运行。进程具有同时执行实体的线程。线程共享进程的相同地址空间。
Goroutines 是轻量级的,比线程轻得多。 Goroutine 运行在相同的地址空间中,因此对共享内存的访问必须是同步的;这可以通过sync包来完成,但建议使用channels来同步goroutines。
goroutine是作为一个函数或方法来实现的。使用"go"关键字调用(调用)它。当 goroutine 完成时,没有任何东西返回给调用者函数。

Go Concurrency Example

package main
import (
   "fmt"
   "time"
   "sync"
)
var wg = sync.WaitGroup{}
func main() {
   wg.Add(2)
   go fun1()
   go fun2()
   wg.Wait()
}
func fun1(){
   for  i:=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()
}
输出:
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

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4