美文网首页
golang代码分析

golang代码分析

作者: jojo1313 | 来源:发表于2019-07-19 18:14 被阅读0次

    1.golang并行示例(1)

    package main
    
    import (
        "fmt"
    )
    
    func Processor(seq chan int,wait chan struct{}){    //迭代方式实现并行go func()
        go func() {
            prime, ok := <-seq
            if !ok {
                close(wait)
                return
            }
            fmt.Println(prime)
            out := make(chan int)
            Processor(out, wait)
            for num := range seq {  //for循环取chan值避免chan阻塞
                if num%prime != 0 {
                    out <- num
                }
            }
            close(out)
        }()
    }
    
    func main() {
        origin,wait := make(chan int),make(chan struct{})
        Processor(origin,wait)  //processor放在for循环前防止deadlock
        for num:=2;num<10000;num++  {
            origin <-num
        }
        close(origin)
        <-wait
    }
    

    相关文章

      网友评论

          本文标题:golang代码分析

          本文链接:https://www.haomeiwen.com/subject/oinslctx.html