草庐IT

my_goroutine

全部标签

Goroutines 选择范围循环

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭4年前。Improvethisquestion我想生成一个goroutine来监听chanint和chanos.Signal类型的两个channel。我希望行为具体取决于在任一channel上收到的内容。这意味着一些os.Signal可能会导致os.exit()而有些可能不会,一些int通过chan

go - MergeSort 算法与 goroutines 问题

我是Go的新手,我想更好地理解它,尤其是谈论goroutines。我在GitHub上找到了一个并行MergeSort算法,在研究这段代码时,我有一些问题,我想了解为什么使用它以及是否有任何方法可以将它转换为其他类型。第一个问题,为什么channel被用作struct{}而不是int[]或其他东西?有没有办法将其更改为int[]或任何其他类型?另一个问题是,为什么这个算法使用gofunc()而不是为此创建新函数?有没有一种方法可以用其他功能实现它并简单地在前面写go关键字?最后一个问题,什么时候使用default大小写?funcMultiMergeSortWithSem(data[]in

go - 如何实现 goroutines 的管道?

我需要一些帮助来了解如何使用管道将数据从一个goroutine传输到另一个goroutine。我读了golangblogpostonpipeline,我理解了但不能完全付诸行动,因此想到向社区寻求帮助。现在,我想出了这个丑陋的代码(Playground):packagemainimport("fmt""sync""time")funcmain(){wg:=sync.WaitGroup{}ch:=make(chanint)fora:=0;a问题我想使用管道或任何正确的方式来做这件事。此外,博文中显示的管道不适用于goroutines,因此我无法自己完成。在现实生活中,func1和func

go - 避免goroutines之间双向通信的死锁

我正在第一次体验Go,到目前为止我真的很喜欢goroutine和channels结构。我想知道是否有一种惯用的方法可以避免多个goroutine之间的双向通信出现死锁。考虑以下示例。共有三个goroutine:producer、worker和controller。生产者生产整数。实际上这可能是数据来了例如来自网络连接。worker从生产者那里接收数据,并对其进行一些操作它。然后,worker将修改后的数据发送给controller。在某些情况下,Controller会向worker发送命令。在里面例如,如果接收到的整数大于180,就会发生这种情况。当Controller试图向工作人员发

go - 我如何等待对多个其他 Goroutines 的单个 Goroutine 响应?

大家好,我正在从Python3过渡到Go,所以我正在尝试重写我创建的库以获得更好的性能。我面临一个问题,因为我是GolangXD中的新手,我使用有限的API下载数百个json,我想尽可能少地使用请求。所以在下载那些jsons时,一些使用的URL是重复的,我得到的第一个想法是在我的下载函数(goroutines)和每个goroutine之间传递一个map[stringLink]*myJsonReceived在下载之前检查链接是否已经被另一个goroutine处理,因此与其再次请求它并浪费带宽+API调用,不如等待其他goroutine完成下载并从字典中获取它。我有几个选择:1)gorou

go - 如何编写在 goroutine 中执行的函数来发送和接收消息?

我必须编写一个客户端代码,它以字符串的形式从服务器接收消息,并从控制台获取输入以结束发送到服务器的消息。这两个操作应该同时运行。我编写了一个代码来执行这些操作,但不是同时执行这些操作。这是我当前的代码:funcSocketClient(){conn,err:=net.Dial("tcp",":9000")iferr!=nil{log.Fatal(err)}deferconn.Close()server_reader:=bufio.NewReader(conn)input_reader:=bufio.NewReader(os.Stdin)for{//forsendingmessagesb

Go:读取文件,goroutine 死锁

我有两组代码-读取包含随机文本行的文件,并将每一行加载到一个channel。我无法理解为什么会返回错误。但另一个没有。案例#1返回“fatalerror:所有goroutines都睡着了——死锁!”但Case#有效。案例#1函数主函数(){file,err:=os.Open("/Users/sample/Downloads/wordlist")iferr!=nil{log.Fatal(err)}lines:=make(chanstring)scanner:=bufio.NewScanner(file)forscanner.Scan(){lines案例#2函数主函数(){file,err

google-app-engine - 通过goroutine异步发布到google pub sub

我正在尝试通过goroutine将消息异步推送到googlepub-sub但我遇到了以下错误panic:不是AppEngine上下文我正在使用mux并有一个api处理程序n=100万funcapihandler(whttp.ResponseWriter,r*http.Request){gocreateuniquecodes(n)return"requestrunninginbackground"}funccreateuniquecodes(n){c:=make(chanstring)gocreateuniquecodes(c,n)forval:=rangec{publishtopubs

go - 同时从两个 channel 消费会导致 goroutine 占用我的 RAM

我对并发很陌生,我决定在goroutines中运行我的http处理程序的几个部分,它开始占用我的RAM并卡住我的计算机。这就是我想要做的:我的处理程序有这两个函数调用qChan:=cloneQuestions(currentFormView.QuestionObjects,currentForm.Id,currentForm.VersionNumber,now)rChan:=cloneRules(currentFormView.RuleObjects,currentForm.Id,currentForm.VersionNumber,now)这两个函数调用都在名为helpers.go的文

go - 如何转储正在运行的 kubelet 的 goroutines 堆栈竞争

kubernetes比较复杂,kubelet在某些场景长时间运行会出现死锁。有没有办法转储正在运行的kubelet的goroutine堆栈跟踪?如下所示的预期输出对调试kubelet的死锁类问题非常有帮助。goroutine386[chansend,1140minutes]:k8s.io/kubernetes/pkg/kubelet/pleg.(*GenericPLEG).relist(0xc42069ea20)/workspace/anago-v1.11.5-beta.0.24+753b2dbc622f5c/src/k8s.io/kubernetes/_output/dockeriz