goroutine

    0热度

    1回答

    这里是我的问题:来电者将创建几个够程运行我的代码doWork, go func() { for data := range dataSet { doWork(data) } }() 而现在,我想看看有多少够程都开始做这项工作,虽然我不能修改或读取来自调用者的数据。我怎样才能做到这一点? [更新] doWork传递给调用者,例如: doWork := func(

    4热度

    1回答

    首先我将描述我的情况。 我必须从我的应用程序对几个API执行HTTPS请求,并且它们应该同时运行。 我想知道我是否应该使用每个goroutine单独的HTTP客户端,或者我可以在所有goroutine中共享一个客户端。当然,我希望享受HTTP客户端提供的连接重用/共享,但我担心它是线程(又称goroutine) - 安全,如果客户端将同时运行请求,或者它们实际上会被排序?

    0热度

    1回答

    我正在使它停止在CTRL-C上询问输入。 我目前所拥有的是一个单独的go-routine在接收到CTRL-C后会改变一个变量的值,所以它不会要求另一行。但是,我似乎无法找到解决当前线路的方法。 即我仍然需要按一次输入,才能退出当前正在阅读的\ n的迭代。 是否有一种方法可以将“\ n”推入标准读取器中,读取读取字符串。或者完全停止它的执行。

    3热度

    2回答

    编码时遇到了问题。当我在goroutine中使用内部结构的方法时,我看不到像这个代码中的内部状态。 package main import ( "fmt" "time" ) type Inner struct { Value int } func (c Inner) Run(value int) { c.Value = value f

    1热度

    1回答

    这是我玩的Golang程序,为了让我的概念正确。 当我运行该程序时,它陷入了僵局,我不明白为什么? 请有人指出哪里出了问题? package main import ( "fmt" "sync" ) var wg sync.WaitGroup func main() { numOfGoRoutines := 10 wg.Add(numOfGoR

    4热度

    4回答

    这是我正在生成死锁的程序,我该如何避免它,以及处理这种情况的推荐模式是什么。 问题是超时后如何检测我的频道上没有阅读器? var wg sync.WaitGroup func main() { wg.Add(1) c := make(chan int) go readFromChannel(c, time.After(time.Duration(2)*time.S

    2热度

    2回答

    我有以下代码执行例程。 package main import ( "fmt" "time" ) func count(id int) { for i := 0; i < 10; i++ { fmt.Println(id, ":", i) time.Sleep(time.Millisecond * 1000)

    1热度

    2回答

    下面是一个函数,用于启动外部进程,将正则表达式与进程的标准输出进行匹配,并返回匹配的内容。 func (c *Colony) startCircuit(peer *string) (string, error) { var ( err error cmd *exec.Cmd anchorChan chan string ) //

    0热度

    1回答

    我在goroutine内部基于迭代变量i进行了一些条件检查,发现它给了我不期望的结果,我决定用一些简单的方法来确认它码。 for i := 1; i <= 5; i++ { wg.Add(1) fmt.Println(i) go func() { fmt.Println(i) wg.Done() }() } wg.Wait(

    1热度

    4回答

    我一直在玩从A Tour of Go下面的代码,但我不明白当我应用一些小的更改时发生了什么。原来的代码是这样 package main import ( "fmt" "time" ) func say(s string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond)