goroutine

    1热度

    1回答

    我正面临一个烦人的问题。当我尝试使用wg.Add()来同步我的例程时,会引发死锁错误。 package main import ( "fmt" "sync" ) func hello(ch chan int, num int, wg *sync.WaitGroup) { for { i := <-ch if i == num {

    8热度

    1回答

    如果应用程序使用多个文件描述符(例如,打开 - 写入数据 - 同步 - 关闭)执行一些繁重工作,Go运行时会发生什么?当昂贵的系统调用发生时(如syscall.Fsync),它是否阻止所有的goroutine?或者只有调用的goroutine被阻止,而其他人仍在运行? 因此,编写具有多个用户空间的工作程序 - 内核空间上下文切换?使用多线程模式进行磁盘输入有意义吗? package main

    3热度

    2回答

    我有一串30'000字符串。我如何将这个切片的处理分成10个例程,从切片中取出3000个字符串,从中提取一些数据并推入一个新的切片? 所以,最后,我将有10个切片,每个切片有3000个处理结果。处理这个问题的模式是什么? 我看过this article,但不确定这些模式适用于我的情况。

    0热度

    2回答

    我有一个例子代码之前sync.WaitGroup结束够程(你可以找到它的Go Playground): package main import ( "fmt" "sync" "time" ) func main() { messages := make(chan int) var wg sync.WaitGroup var res

    -4热度

    1回答

    我从https://blog.golang.org/pipelines看一下例子: func main() { in := gen(2, 3) // Distribute the sq work across two goroutines that both read from in. c1 := sq(in) // When does this lin

    1热度

    2回答

    我是Go的新手。当我注释掉第二个例程时,有一个致命的错误。我不明白是什么原因导致这个错误发生。你能解释给我吗? package main import ( "fmt" "time" ) func main() { ch := make(chan int) go func() { for i := 0; i < 10; i++ {

    0热度

    3回答

    此够程块... go log.Fatal(http.ListenAndServe(":8000", nil)) log.Print("This doesn't print") 此够程不会阻止... go func() { log.Fatal(http.ListenAndServe(":8000", nil)) }() log.Print("This prints") 此够程

    -1热度

    1回答

    我有以下设置: func startsMain(){ go main() } fun stopMain(){ //kill main } func main() { //infinite loop } 我创建一个黄瓜的步骤,我需要能够启动和击落的应用。 谢谢。

    0热度

    3回答

    出于某种原因,一旦我开始通过我的goroutine中的通道添加字符串,代码在运行时就会停止。我认为这是一个范围/关闭问题,所以我直接将所有代码直接移入函数中无济于事。我浏览了Golang的文档,所有的例子都与我的相似,所以我对于出错的事情有点无知。 func getPage(url string, c chan<- string, swg sizedwaitgroup.SizedWaitGroup

    4热度

    2回答

    凝视运行递归函数的goroutine,我想发送一个信号来停止这些递归函数。这是函数(功能并不重要): func RecursiveFunc(x int, depth int, quit chan bool) int { if depth == 0 { return 1 } if quit != nil { select { ca