博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Fanout - 更容易得写并发代码
阅读量:5944 次
发布时间:2019-06-19

本文共 1044 字,大约阅读时间需要 3 分钟。

不用管理 grouting 和 channel 了。 以下为转发 golangtc.com 原文:


刚刚写了个包,觉得值得出来分享下:

文档:

用来简化并发程序(goroutine, channel)的编写,这个包直接改写自Go Concurrency Patterns: Pipelines博客的最后一个样例程序。

平时写带goroutine和channel的程序,总是时不时的爆"fatal error: all goroutines are asleep - deadlock!",检查起来又很难找原因。

例子程序 - 用60个goroutine一起跑whois来查看域名是不是还在:

inputs := []interface{}{}for _, word:= range domainWords {    inputs = append(inputs, word)}results, err2 := fanout.ParallelRun(60, func(input interface{})(interface{}, error) {    word := input.(string)    if strings.TrimSpace(word) == "" {        return nil, nil    }    py := pinyin.Convert(word)    pydowncase := strings.ToLower(py)    domain := pydowncase + ".com"    outr, err := domainAvailable(word, domain)    if outr.available {        fmt.Printf("[Ohh Yeah] %s %s\n", outr.word, outr.domain)    } else {        fmt.Printf("\t\t\t %s %s %s\n", outr.word, outr.domain, outr.summary)    }    if err != nil {        fmt.Println("Error: ", err)    }    return outr, nil}, inputs)fmt.Println("Finished ", len(results), ", Error:", err2)

一图来说明:

sunfmin_fanout.png

转载地址:http://znzxx.baihongyu.com/

你可能感兴趣的文章
hdu1025 Constructing Roads In JGShining's Kingdom(二分+dp)
查看>>
Android PullToRefreshListView和ViewPager的结合使用
查看>>
禅修笔记——硅谷最受欢迎的情商课
查看>>
struts2入门(搭建环境、配置、示例)
查看>>
Caused by: org.apache.ibatis.reflection.ReflectionException我碰到的情况,原因不唯一
查看>>
linux top命令查看内存及多核CPU的使用讲述【转】
查看>>
Linux下golang开发环境搭建
查看>>
jQuery操作input
查看>>
layer弹出信息框API
查看>>
delete from inner join
查看>>
WPF自学入门(十一)WPF MVVM模式Command命令 WPF自学入门(十)WPF MVVM简单介绍...
查看>>
git merge 和 git merge --no-ff
查看>>
独立软件开发商进军SaaS注意八个问题,互联网营销
查看>>
jdk内存的分配
查看>>
关于self.用法的一些总结
查看>>
UIView翻译 (参考)
查看>>
Android Display buffer_handle_t的定义
查看>>
SSH详解
查看>>
ASM概述
查看>>
【290】Python 函数
查看>>