美文网首页
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