当前位置 : 主页 > 编程语言 > java >

go快速入门并发-channel

来源:互联网 收集:自由互联 发布时间:2022-08-15
概述 用简单的示例解决go并发与普通单线程的区别: 1000个请求进来: go的并发解决速度 go的单线程解决速度 两者比较即可了解go并发的魅力 channel的简单使用 定义通道 var c = make ( cha


概述

用简单的示例解决go并发与普通单线程的区别:
1000个请求进来:
go的并发解决速度
go的单线程解决速度
两者比较即可了解go并发的魅力

channel的简单使用

定义通道

var c = make(chan int)

定义通道的接收方

func worker(i chan int) {
fmt.Println(<-i)
}go worker(c)

通道的使用:
接收方 ⬅ 发送值

c <- 1

注意向通道发值的时候必须先定义通道的接收方

并发比较

用循环模拟1000请求

  • 普通请求的处理
  • for i := 0 ; i < 1000 ; i++ {
    print(i)
    }

    //该方法可表示处理单个请求的处理时间
    func print(i int) {
    fmt.Println(i)
    time.Sleep(time.Microsecond)
    }

    花费时间:15s

    2.channel 请求的处理

    //定义通道
    var c = make(chan int)

    for i := 0 ; i < 1000 ; i++ {
    //先建立起通道接收方才能向通道传值
    go worker(c)
    c <- i
    }
    //该方法可表示处理单个请求的处理时间
    func worker(i chan int) {
    fmt.Println(<-i)
    time.Sleep(time.Microsecond)
    }

    花费时间:68ms


    网友评论