goroutine

    -1热度

    2回答

    我想知道以下的惯用方法。 我有N个缓慢的API查询和一个数据库连接,我想要一个缓冲通道,响应将会到来,以及一个数据库事务,我将用它来写入数据。 我只能拿出旗语的东西如下妆例如: func myFunc(){ //10 concurrent API calls sem := make(chan bool, 10) //A concurrent safe map as

    1热度

    1回答

    你可以读一个goroutine频道吗?在这个声明中,这个频道读到哪里? go func() { <-ctx.Done() logger.Errorf("canceled: %v", ctx.Err()) }() 增加: 请问这代码比如果我用空白标识 go func() { _ = <-ctx.Done() logger.Errorf("canceled

    -2热度

    1回答

    我已经开始学习Go了,它很有趣也很容易。但是在goroutines工作中,我看不到有什么好处。 如果我尝试在2个功能依次加1万个号码两次: package main import ( "fmt" "time" ) var sumA int var sumB int func fSumA() { for i := 0; i < 1000000; i++ {

    0热度

    3回答

    我很新,我不确定为什么这个代码有这个输出。我知道睡眠会导致新的goroutine在指定的时间内启动另一个线程。我试图按顺序绘制出逻辑,看起来“世界”应该总是在“你好”之前打印出来。 package main import ( "fmt" "time" ) func say(s string) { for i := 0; i < 5; i++ { t

    1热度

    1回答

    我正在开发一个基于谷歌API的Gmail客户端。 我要通过这个电话获得 r, err := s.gClient.Service.Users.Labels.List(s.gClient.User).Do() 然后标签列表,每一个标签,我需要得到细节 for _, l := range r.Labels { d, err := s.gClient.Service.Users.Labels

    1热度

    1回答

    用下面的代码: package main import ( "github.com/davecgh/go-spew/spew" "sync" "time" ) func callbackWithTimeout(cbFunc func() ([]byte, error), timeout time.Duration) { defer wg.Done()

    0热度

    1回答

    在下面的代码中,如何将结果从slowExternalFunction分配给合适的人?它可以通过渠道完成,只是为了清晰起见,我定义了slowExternalFunction返回int。 type Person struct { Id int Name string WillDieAt int } func slowExternalAPI(i int) int

    0热度

    1回答

    通过传递参数m,从goroutine调用此函数。 以米发送的值是字符串:“01A”,并声明开关不承认 func myfunc(m string, c chan string) { defer close(c) switch m { case "01a": msg_out = "NO PASS" } c <- msg_out }

    0热度

    1回答

    在下面的例子中,我在匿名转发例程中发送“ping”到'mq'字符串通道,并尝试接收这四个字符串dequeue() goroutines,不知道为什么它不会不打印任何东西 $ cat channels2.go ... var mq chan string func main() { mq = make(chan string) for i

    0热度

    1回答

    我试图使用Go的并发并行运行几个算了一笔账: func intensity_calc(input Matrix, distance float64) Matrix { output := create_matrix(len(input), len(input[0])) var wg sync.WaitGroup reverse := len(input)