草庐IT

language-concurrency

全部标签

javascript - 如何向 "GraphQL schema language"中的字段添加说明

我有一个graphql模式,其中的一个片段如下所示:typeUser{username:String!password:String!}在graphiql中,有一个描述字段,但它总是说“self描述”。如何向模式添加描述? 最佳答案 如果您使用的是GraphQL.js0.7.0或更高版本,您只需在要描述的字段、类型或参数之前直接添加注释即可。例如:#AtypethatdescribestheusertypeUser{#Theuser'susername,shouldbetypedintheloginfield.username:St

programming-languages - 我应该将 Go 用于什么样的项目?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。Golanguage是一种来自谷歌的新编程语言。它仍处于试验阶段,我无法确定它的稳定性。你会冒险使用Go来完成什么样的项目?

concurrency - 与 google go 中的 channel 共享资源

我正在查看GoogleGo语言,因为我正在构建一个实时系统,我发现通过channel共享资源有点困惑。为了便于理解,我正在尝试让不同的goroutines以相同的次数递增和递减共享值,最终为0。我知道我的代码是错误的,但我我并没有真正掌握它的窍门。有人愿意解释这里出了什么问题吗?packagemainimport(."fmt"."runtime")funcincrement(cchanint){forx:=0;x我可以使用类似于使用C或Python的互斥锁或信号量,尽管我想利用Go中的channel。**UPDATE添加WaitGroup会改变程序流程吗?我添加了一个WaitGroup

concurrency - Go 中互斥锁的问题

除了互斥量之外,一切都很好。在我锁定和解锁后,它不会做任何事情。有什么明显的我想念的吗?最重要的是,解锁后,我想在这个函数中运行一个函数。我试过将其作为常规函数调用(timer())甚至(gotimer())。funcshield(state*State){fors:=rangestate.ToggleShield{//runifdataonchannelifs==true{//ifdataonchannelistruefmt.Println("OpeningtheshieldsThisisuninteruptable.Pleasewait...")state.VariableMute

concurrency - Goroutine 和 for 循环

我想做的就是向channel发送一个值,然后从main()函数返回,并在从channelch.但这会一直运行下Go:ch:=make(chanint)for{gofunc(){ch从channel接收到一个值后,如何使用此for循环返回?为什么它会永远运行?Goplayground链接在这里http://play.golang.org/p/EvmT6Pw96Y 最佳答案 因为for循环永远运行,你的代码永远运行。从未到达for循环后从ch接收。如果你想让你的代码在某个时候退出,你必须在某个时候结束for循环,例如让它只运行一定数量的

concurrency - 并发 Go 例程的相互执行问题

在我的代码中有三个并发例程。我尝试简要概述一下我的代码,Routine1{dosomething*SendinttoRoutine2SendinttoRoutine3PrintSomethingPrintSomething*dosomething}Routine2{dosomething*SendinttoRoutine1SendinttoRoutine3PrintSomethingPrintSomething*dosomething}Routine3{dosomething*SendinttoRoutine1SendinttoRoutine2PrintSomethingPrintSo

concurrency - 即使 channel 关闭,goroutines 也会死锁

我有一个列表,其中有一个函数可以从中弹出元素,另一个函数可以“接收”弹出的元素。我以为在接收者之后关闭channel会关闭channel,但似乎程序在到达那里之前就死锁了。哪种方法最好?我是否应该有另一个channel来检测pop何时完成?Playgroundlinkfuncpop(list*[]int,cchanint){iflen(*list)!=0{result:=(*list)[0]*list=(*list)[1:]fmt.Println("abouttosend",result)c0{receiver(c)}close(c)//Dosen'tseemtohaveanyeffe

concurrency - go 例程的奇怪行为

我刚刚尝试了下面的代码,但结果似乎有点奇怪。它首先打印奇数,然后打印偶数。我真的很困惑。我希望它一个接一个地输出奇数和偶数,就像1,2,3,4...。谁能帮帮我?packagemainimport("fmt""time")funcmain(){gosheep(1)gosheep(2)time.Sleep(100000)}funcsheep(iint){for;;i+=2{fmt.Println(i,"sheeps")}} 最佳答案 您很可能只使用一个CPU线程运行。所以它运行第一个goroutine,然后运行第二个。如果你告诉go它

concurrency - 为什么我所谓的并行 go 程序不是并行的

packagemainimport("fmt""runtime""sync")varwgsync.WaitGroupfuncalphabets(){forchar:='a';char我希望输出会混淆(因为缺少更好的词),但是相反;示例输出是:$去运行parallel_prog.go开始Go例程等待完成abcdefghijklmnopqrstuvwxyz1234567891011121314151617181920212223242526终止程序我错过了什么?谢谢, 最佳答案 你什么都不缺。它的工作。调用没有显示为“交错”(混合),不

concurrency - 所有 go routines 都睡着了 - 死锁

我正在使用Go构建工作系统的框架,但我收到“fatalerror:所有goroutines都在sleep-死锁!”。我使用两个channel进行协调,一个用于创建工作,第二个用于发送结果。创建作业后,我关闭输入channel。我的问题是如何关闭输出channel以便程序可以正确退出。代码是:packagemainimport("bufio""flag""fmt""log""math/rand""os""time")typeWorkstruct{idinttstime.Duration}const(NumWorkers=5000NumJobs=100000)funcworker(inbe