草庐IT

Asynchronous

全部标签

asynchronous - 处理条件异步函数的返回数据的惯用方法是什么?

我有一个函数可以调用也可以不调用为异步go-routine。funcAPICall(request*HTTPRequest)*HTTPResponse*HTTPRequest是指向结构的指针,该结构包含构建请求所需的各种数据:typeHTTPRequeststruct{//RepresentsarequesttothetwitterAPImethodstringbaseurlstringurlParamsmap[string]stringbodyParamsmap[string]stringauthParamsmap[string]stringresponseChanchan*HTTP

asynchronous - 处理条件异步函数的返回数据的惯用方法是什么?

我有一个函数可以调用也可以不调用为异步go-routine。funcAPICall(request*HTTPRequest)*HTTPResponse*HTTPRequest是指向结构的指针,该结构包含构建请求所需的各种数据:typeHTTPRequeststruct{//RepresentsarequesttothetwitterAPImethodstringbaseurlstringurlParamsmap[string]stringbodyParamsmap[string]stringauthParamsmap[string]stringresponseChanchan*HTTP

multithreading - 从函数返回后让 goroutines 保持运行

在Java中,我可以让线程运行很长时间,我不需要停留在启动线程的函数中。Goroutines,Go对Threads的回答似乎在我从启动例程的函数返回后停止运行。如何让这些例程保持运行并从调用函数返回?谢谢 最佳答案 Goroutinesdo在调用它们的函数退出后继续运行:Playgroundpackagemainimport("fmt""time")funccountToTen()chanbool{done:=make(chanbool)gofunc(){fori:=0;i请注意,我们需要阻塞主线程,直到countToTen()的g

multithreading - 从函数返回后让 goroutines 保持运行

在Java中,我可以让线程运行很长时间,我不需要停留在启动线程的函数中。Goroutines,Go对Threads的回答似乎在我从启动例程的函数返回后停止运行。如何让这些例程保持运行并从调用函数返回?谢谢 最佳答案 Goroutinesdo在调用它们的函数退出后继续运行:Playgroundpackagemainimport("fmt""time")funccountToTen()chanbool{done:=make(chanbool)gofunc(){fori:=0;i请注意,我们需要阻塞主线程,直到countToTen()的g

asynchronous - 为什么我相同的 go 例程乱序了?

我有以下go代码执行例程。packagemainimport("fmt""time")funccount(idint){fori:=0;i我希望输出是:1:02:03:04:05:06:07:08:09:01:12:13:14:1etc...但相反,我得到:0:06:07:05:08:09:03:02:04:01:05:16:17:11:18:1etc...为什么它们不是按照原来的顺序,在执行计数方法的for循环之外?为什么有些计数方法会不同步? 最佳答案 goroutine何时执行是程序员无法控制的。如果你通过channel和sy

asynchronous - 为什么我相同的 go 例程乱序了?

我有以下go代码执行例程。packagemainimport("fmt""time")funccount(idint){fori:=0;i我希望输出是:1:02:03:04:05:06:07:08:09:01:12:13:14:1etc...但相反,我得到:0:06:07:05:08:09:03:02:04:01:05:16:17:11:18:1etc...为什么它们不是按照原来的顺序,在执行计数方法的for循环之外?为什么有些计数方法会不同步? 最佳答案 goroutine何时执行是程序员无法控制的。如果你通过channel和sy

go - 没有取消传播的上下文

我如何创建一个Go上下文的副本(如果你愿意的话,一个克隆),它包含存储在原始文件中的所有值,但不会在原始文件被取消时被取消?对我来说,这确实是一个有效的用例。假设我有一个http请求,它的上下文在响应返回给客户端后被取消,我需要在这个请求结束时在一个单独的goroutine中运行一个异步任务,这个goroutine很可能比父上下文活得更久。funcHandler(ctxcontext.Context)(interface{},error){result:=doStuff(ctx)newContext:=howDoICloneYou(ctx)gofunc(){doSomethingEls

go - 没有取消传播的上下文

我如何创建一个Go上下文的副本(如果你愿意的话,一个克隆),它包含存储在原始文件中的所有值,但不会在原始文件被取消时被取消?对我来说,这确实是一个有效的用例。假设我有一个http请求,它的上下文在响应返回给客户端后被取消,我需要在这个请求结束时在一个单独的goroutine中运行一个异步任务,这个goroutine很可能比父上下文活得更久。funcHandler(ctxcontext.Context)(interface{},error){result:=doStuff(ctx)newContext:=howDoICloneYou(ctx)gofunc(){doSomethingEls

asynchronous - 在 Go 中使用 Channels 实现 Promise

我正在尝试在Go中实现类似于Javascript中的Promise。typePromisestruct{ResultchanstringErrorchanerror}funcNewPromise()(*Promise){r:=make(chanstring,1)e:=make(chanerror,1)return&Promise{Result:r,Error:e,}}funcmain(){varp=NewPromise()gofunc(p*Promise){time.Sleep(time.Duration(5)*time.Second)p.Result如何执行以下操作:运行一个goro

asynchronous - 在 Go 中使用 Channels 实现 Promise

我正在尝试在Go中实现类似于Javascript中的Promise。typePromisestruct{ResultchanstringErrorchanerror}funcNewPromise()(*Promise){r:=make(chanstring,1)e:=make(chanerror,1)return&Promise{Result:r,Error:e,}}funcmain(){varp=NewPromise()gofunc(p*Promise){time.Sleep(time.Duration(5)*time.Second)p.Result如何执行以下操作:运行一个goro